![](/img/trans.png)
[英]What is the difference between git pull and git fetch + git rebase?
[英]What's difference between git pull and git fetch+rebase
我正在使用GIT
作为版本控制系统的项目。 在项目的开发过程中,它说
不要使用“ git pull”,因为那样会导致合并并随着时间的推移创建非常混乱的历史记录。 使用git fetch和git rebase代替。
基本上我知道git pull
实际上是git fetch + git merge
。 git rebase
将保持提交图干净,因为git rebase
,本地分支与远程分支在同一行。
但是我还是不明白为什么git pull创建一个非常混乱的历史? 有人可以向我解释吗?
Fetch + rebase将创建线性历史记录(每个提交只有一个父对象),例如
last common commit <- remote commit <- remote commit <- local commit
拉,如果在远程分支机构和本地分支机构中都进行了一些更改,则会创建混乱的历史记录(commit可以有两个父级-查看“ merge commit”)
remote commit <- remote commit
last common commit <- <- merge commit
local commit
您可以在此处查看有关git fetch + rebase
和git pull
之间的官方文档。 但是与git pull相比,前者通常是更好的方法。 git pull获取当前分支并立即合并。 (可能很讨厌解决它,否则会出现冲突)。
在进行重新设置基准的地方,将当前分支的头部与正在重新设置的分支的头部进行调整。 这样就得到了线性历史记录。
因此,在进行由多个开发人员为存储库或分支做出贡献的设置工作时,请始终保持基础。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.