git rebase如何为不同版本的master工作?

时间:2015-03-25 21:00:29

标签: git

希望这不会重复别人的问题。我知道有很多关于变基的话题,但是当在野外有两个同一个分支的副本时,我试着解决它是如何工作的。

情境:

A人正在开发一项新功能......

(master)     M1 -- M2 -- M3
              \ 
(feature)       -- F1 -- F2

B人只有他自己的版本几乎相同的东西,但少了一些提交。

(master)     M1 -- M2
              \ 
(feature)       -- F1

现在,Person A通过执行git rebase master后跟git push -f之类的操作进行重新定位。现在他有类似的东西:

(master)     M1 -- M2 -- M3
                          \ 
(feature)                  -- F1 -- F2

冷却。完善。我们庆祝吧!哦,但不是那么快。现在人B想要得到功能分支,所以他做了一个git重置,以确保他不会搞砸(git reset --hard origin/feature)。不,他并不关心失去任何局部变化。

所以这是我不理解的部分。 B人现在有一个功能分支,该分支被重新定位为不存在的主副本。看起来像是:

(master)     M1 -- M2 -- ??
                          \ 
(feature)                  -- F1 -- F2

我可以帮助了解在这种情况下会发生什么吗?它可能看起来像一个边缘情况,但它发生在我身上相当多。在我的情况下,我既是人A又是人B,但在两台不同的机器上运行相同的代码。在单独工作时,我并不总是切换回主人并提取最新信息。这一切都有效,一旦我拉大师,日志看起来是正确的(它们匹配),但我真的不明白当主人不匹配时会发生什么。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

B人将在他们的回购中拥有提交M3,但是master仍将指向M2(直到人员B在git pull时运行master。)