对git分支的好的和清晰的理解分歧了吗?

时间:2012-02-08 07:40:57

标签: git github

  

可能重复:
  master branch and 'origin/master' have diverged, how to 'undiverge' branches'?

我用Google搜索并阅读了很多帖子,但没有一个能让我理解分支差异问题。

如果我有远程跟踪分支,我经常会遇到以下情况:

$ git status
# On branch feature/worker-interface
# Your branch and 'origin/feature/worker-interface' have diverged,
# and have 1 and 4 different commit(s) each, respectively.

任何人都可以有任何好的和明确的建议或指出关于这个git问题的好帖子吗?

1 个答案:

答案 0 :(得分:1)

首先,您可以使用 cherry 命令查看分支之间的提交有何不同,以及以何种方式。因此,在这种情况下,运行git cherry origin/feature/worker-interface会向我们显示当前分支上的提交状态以及它们与origin/feature/worker-interface的堆叠方式。   你会发现1个你忘了犯的回购。

现在,让我们看看发生了什么'origin / feature / worker-interface'及其提交。为此,我们可以使用特殊格式git log ..origin/feature/worker-interface --oneline运行 log 命令

在这里,我们看到4个不在当前分支中退出的提交

所以现在我们已经知道发生了什么。你已经在你的本地主分支上做了1次提交,看起来origin/feature/worker-interface上有4个你还没有合并的提交。所以,你可以盲目地将事情合并在一起并继续前行(如果他们合并没有冲突),但我想告诉你  如何以更加可控的方式处理它。

  1. 首先,创建一个指向当前HEAD的分支:git checkout -b local_changes
  2. 现在我们已经开始跟踪这些变化,我们切换回功能/工作者界面:git checkout feature/worker-interface
  3. 此时,重置feature / worker-interface分支以摆脱1次提交。
  4. 你去!您可以检查分支git status的状态,系统会提示您无提交