了解Git变基

问题描述 投票:0回答:2

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

本地

  • master
  • 我的工作副本

远程

  • 来源/主文件
  • 来源/我的工作副本
  • 来源/其他工作副本

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

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-workingcopyorigin / my-workingcopy落后7次提交。可以理解的是,由于重新设置基准,它在远程服务器之前处于领先地位,但是,由于它们在进行重新基准设置之前是同步的,因此导致它从远程服务器落后的原因是什么。

对此进行任何澄清都是有帮助的。

git git-branch rebase branching-and-merging
2个回答
3
投票

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

您将当前分支后退到与另一个分支相等的位置(基本上将提交放在当前分支上,然后将提交应用于当前分支,但不应用于另一个分支)。对于每次提交,git可能会自动合并,因此它可能与重新设置基准之前的值不完全相同(因为起点有所不同)。

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


0
投票

事实是,这些修订与原始修订具有无关系]...。git表示它们是不同的修订...。因此在origin分支上,您具有原始的7个修订...。您在本地分支机构中有[[other 7个修订版本(加上8个来自主服务器的修订版,我认为是这样),与远程分支机构的7个修订版本不同。

© www.soinside.com 2019 - 2024. All rights reserved.