我刚刚解决了由于从项目的远程仓库拉取导致的一些冲突。
据我所知,一旦解决了冲突,你有两种解决方案:
git rebase --continue
git commit -m "foobar"
我只是想知道,在这种情况下,这两种操作之间是否有任何区别?因为我知道它们在基本形式上是根本不同的。
我刚刚解决了由于从项目的远程仓库拉取导致的一些冲突。
据我所知,一旦解决了冲突,你有两种解决方案:
git rebase --continue
git commit -m "foobar"
我只是想知道,在这种情况下,这两种操作之间是否有任何区别?因为我知道它们在基本形式上是根本不同的。
编辑 #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 pull
,但是git rebase --continue
也可以工作,这有点奇怪。这就是为什么我发布了这个帖子的原因。 - Mickäel A.