我正在开发一个使用GIT
作为版本控制系统的项目。在项目的开发过程中,它说
不要使用“git pull”,因为这会导致合并,并随着时间的推移创建一个非常混乱的历史记录。改为使用git fetch和git rebase。
基本上我知道git pull
实际上git fetch + git merge
。并且git rebase
将保持提交图清洁,因为在git rebase
之后,本地分支变为与远程分支在同一行。
但我还是不明白为什么git pull会创造一个非常混乱的历史?有人可以向我解释一下吗?
答案 0 :(得分:3)
Fetch + rebase将创建线性历史记录(每个提交只有一个父项),如
last common commit <- remote commit <- remote commit <- local commit
拉,如果在远程分支和你的本地都有一些变化将创建凌乱的历史(提交可以有两个父母 - 看看“合并提交”)像
remote commit <- remote commit
last common commit <- <- merge commit
local commit
答案 1 :(得分:1)
您可以查看关于git fetch + rebase
和git pull
here之间的官方文档。但与git pull相比,前者通常是更好的方法。 git pull获取当前分支并立即合并它。 (修复它可能会非常讨厌你会遇到冲突)。
当rebase将当前分支的头部调整为正在重新分配的分支时。因此,您将获得线性历史记录。
因此,在处理多个开发人员为存储库或分支做出贡献的设置时,始终要进行重新定位。