git fetch的优势;git rebase origin master

6

可能是重复的问题:
git pull与git fetch git rebase之间的区别

我看到一些git项目建议您通过以下方式更新项目:

git fetch; git rebase origin master

相比于其他方法,这样做有哪些优势呢?

git pull

从在Github上的开源项目的角度来看,因为你总是信任远程仓库。


2
FYI,git pull --rebase 命令会先执行 fetch 操作,然后再执行 rebase 操作。 - opqdonut
实际上,我是在询问GitHub/OSS背景下的优势,而不仅仅是差异。 - Ryan
1个回答

10
如果你没有对分支的本地副本进行任何更改,这两组命令将得到完全相同的历史记录。差异在于,当您对分支的当前副本进行了本地提交时。
如果执行`git pull`,则远程所做的任何更改都将合并到本地分支中,并且您将在历史记录中有一个合并提交。另一方面,如果执行fetch然后执行rebase(或者是`git pull --rebase`),则会在远程更改之上重放您的本地更改。这样可以得到更清晰的历史记录,因为历史记录中的合并提交较少。
此外,这通常使您的更改更容易合并到上游,因为新提交之前的历史记录与远程上的历史记录匹配。

抱歉,在看到重复问题之前我已经回答了。这并不奇怪。 - Michael Mior
2
谢谢,git pull --rebase 对我很有帮助。 - cakyus
为什么在这么多年之后,我今天才第一次听说git pull --rebase呢?这些年来,我一直手动获取和重置,有一半的时间都把参数顺序搞错了。非常感谢您! - Graunephar

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