了解 Git 变基

Understanding Git Rebase

这是我的 Git 存储库(本地和远程)的结构。

本地

远程

以下是每个分支相对提前提交的状态。

git rev-list --left-right --count master...origin/master
0  15    

git rev-list --left-right --count my-workingcopy...origin/master
40  15

git rev-list --left-right --count my-workingcopy...origin/my-workingcopy
0  0

现在我想将 master 上的那些最新更改(15 次提交)带入 my-workingcopy。所以我做了以下步骤。

git checkout master
git pull origin master
git checkout my-workingcopy
git rebase master

所以我最终得到以下状态。

git rev-list --left-right --count master...origin/master
0  0

git rev-list --left-right --count my-workingcopy...origin/master
40  0    

git rev-list --left-right --count my-workingcopy...origin/my-workingcopy
15  7

在这里,我遇到了最后一个命令的问题,它显示 my-workingcopy 落后于 origin/my-workingcopy通过 7 次提交。可以理解的是,由于变基,它从远程领先,但是是什么原因导致它从远程落后,因为它们在进行变基之前是同步的。

任何对此的澄清都会有所帮助。

问题是修订版与原始修订版没有关系....到git它们是不同的修订版....来源如此分支你有原始的 7 个修订....在你的本地分支上你有 other 7 个修订(加上 8 个来自 master,我假设)不同于远程分支上的 7 个.

进行变基时,您正在重写当前分支的历史记录。

您将当前分支倒回到与另一个分支相同的点(基本上将当前分支上的提交放在一边),然后应用当前分支上的提交,但不应用另一个分支上的提交分支。对于每次提交,git 可能会自动合并,因此它可能不完全等于 rebase 之前的状态(因为起点不同)。

可能是您的 40 次提交中有 7 次需要更改,因此它们不再与上次推送时相同。不必担心。但是,如果您在推送时遇到错误,可能是时候停下来重新考虑一下了。