Git合并冲突-“commit” VS“rebase --continue”

3

我刚刚解决了由于从项目的远程仓库拉取导致的一些冲突。

据我所知,一旦解决了冲突,你有两种解决方案:

  • git rebase --continue
  • git commit -m "foobar"

我只是想知道,在这种情况下,这两种操作之间是否有任何区别?因为我知道它们在基本形式上是根本不同的。

1个回答

7

编辑 #2:

如果您是通过 git pull 命令引发了这种情况,那么预期的解决方法是使用 git commit 命令,因为您需要创建一个新的提交来代表成功合并。如果是通过 git pull --rebase 命令引发的,那么您需要使用我在原始答案中提到的 git rebase --continue 命令,因为这将重用相同的提交而不会创建新的提交。

原始答案(在其中我假设这是通过 git pull --rebase 命令引发的):

我可以告诉您,推荐的方法是使用 git rebase --continue 命令。(请参见此处:http://git-scm.com/docs/git-rebase

git commit 方法可能有效,但如果您不使用 -C 标志,则可能会更改您的提交历史记录,这是解决 git merge 的推荐方法。我想也值得一提的是,-m 标志将更改日志消息,而 git rebase --continue 命令将在不询问的情况下重用旧的提交消息。

编辑:

进一步的研究证实了我的怀疑,即 git commit 方法是危险的,并且可能会使您的仓库处于不良状态。请参见此处:http://www.tigraine.at/2011/08/10/dont-commit-when-you-rebase 和这里:Forgot "git rebase --continue" and did "git commit". How to fix?


问题在于官方的Git用户指南告诉我们,在解决冲突后要提交(commit)更改(最后一句):http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging - Mickäel A.
那个页面涉及合并。尽管看起来可能相似,但变基是一种不同的操作。 - pattivacek
拉取(Pull)是获取(fetch)加合并(merge)的意思。所以我的问题涉及合并而非变基(rebase),即使该命令用于结束合并。 - Mickäel A.
我使用了 git pull,但是 git rebase --continue 也可以工作,这有点奇怪。这就是为什么我发布了这个帖子的原因。 - Mickäel A.
确实,那只是我犯的错误。谢谢! - Mickäel A.
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接