这是我的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
现在,我想将主服务器上的那些最新更改(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
在这里,我遇到了最后一条命令,该命令显示origin / my-workingcopy比origin / my-workingcopy落后7次提交。可以理解的是,由于重新设置基准,它在远程服务器之前处于领先地位,但是,由于它们在进行重新基准设置之前是同步的,因此导致它从远程服务器落后的原因是什么。
对此进行任何澄清都是有帮助的。
进行基准时,您正在重写当前分支上的历史记录。
您将当前分支后退到与另一个分支相等的位置(基本上将提交放在当前分支上,然后将提交应用于当前分支,但不应用于另一个分支)。对于每次提交,git可能会自动合并,因此它可能与重新设置基准之前的值不完全相同(因为起点有所不同)。
可能是您的40个提交中有7个需要更改,因此它们不再与上次推送时相同。不必担心。但是,如果您在推送时遇到错误,则可能是时候停止并重新思考问题了。
事实是,这些修订与原始修订具有无关系]...。git表示它们是不同的修订...。因此在origin分支上,您具有原始的7个修订...。您在本地分支机构中有[[other 7个修订版本(加上8个来自主服务器的修订版,我认为是这样),与远程分支机构的7个修订版本不同。