【问题标题】:Team member overwrite git changes团队成员覆盖 git 更改
【发布时间】:2014-07-25 13:57:52
【问题描述】:

我和一个朋友正在做一个托管在 Github 上的小项目。我们俩都不是很有经验(显然)。

我提交了一个成功合并的拉取请求,但是我的朋友没有更新他的本地存储库以包含这些最新更改。

当我的朋友接下来执行push 时,他覆盖了我的所有更改。

我怎样才能保留我和他的大部分编辑(不包括冲突)?

我尝试根据我的最后一次提交创建一个分支,然后将所述分支与主分支合并,但是这样做没有奏效,因为据说主分支是“最新的”,现在我迷路了。

【问题讨论】:

  • 推送时覆盖数据的唯一方法是使用--force。如果推送时出现任何问题,切勿使用该参数,除非您真的知道自己在做什么。
  • @Jim 如果我恢复到上次提交,他的所有代码都会丢失,不是吗?返回提交后我应该如何继续?谢谢。
  • @KurzedMetal 感谢库尔兹的建议。我想我的朋友只是四处寻找,直到他找到一个“有效”的命令。我们主要致力于这个项目,以获得使用 Git 团队合作的经验。
  • @CasterTroy 他的代码应该还在本地吗?如果您还原并且他应该能够提取并与他当前的文件合并...我想,我有一段时间没有使用 git,但是如果他在本地有他的代码,最坏的情况会还原,让他支持他的拉起来然后从那里走?

标签: git github merge merge-conflict-resolution


【解决方案1】:

解决此问题的最佳方法是执行fetch,后跟mergerebase。我建议使用rebase 来保持您的历史记录线性和干净。

fetch 更新您的远程分支副本,同时不触及您自己的分支。 git pull 将有效地执行 fetch 后跟 merge

解决问题的命令链如下所示

git fetch
git rebase origin/master master
# ... Solve conflicts ... (continue the rebase with 'git rebase --continue')
git push

如果您的朋友在您解决冲突期间犯了错误,您应该在推送之前发送git pull --rebase。但是当你尝试push 时,git 会告诉你这一点,所以我不会担心它,直到它对你尖叫。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2012-02-11
    相关资源
    最近更新 更多