繁体   English   中英

git pull和git fetch + 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 + rebasegit pull之间的官方文​​档。 但是与git pull相比,前者通常是更好的方法。 git pull获取当前分支并立即合并。 (可能很讨厌解决它,否则会出现冲突)。

在进行重新设置基准的地方,将当前分支的头部与正在重新设置的分支的头部进行调整。 这样就得到了线性历史记录。

因此,在进行由多个开发人员为存储库或分支做出贡献的设置工作时,请始终保持基础。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM