我刚刚了解了rebase,并且在被推到遥控器之后我一直strongly warned没有重新提交。我想确保我不会爆炸我的存储库
foo W---X---Y
/ \
master A---B---C---D---E---Z---F---G
此处,主分支上的所有提交都可能已被推送到origin / master。
Z
是git-merge通过将完成的foo分支(Y)与当前主(E)合并而自动提交的。
自foo模块完成以来,master已进行了一些更新(F和G)。
是时候在foo分支上进行一些更新了,但是它与主分支不同步。
只需git rebase master
在最新的foo分支上包含F和G提交即可吗?
您可以修改我的图表以显示我之后的提交历史记录会是什么样的吗?
答案 0 :(得分:2)
假设,是的,这样做是可以的,因为git会检测到foo
已经合并到主人,并且foo
快进到状态master
是这与git merge master
会做同样的事情,也就是说,foo与master相同。
但是,我知道这里只使用git merge
,因为这对我来说更合乎逻辑(你使用merge来做快进,如果你想要它甚至有一个--ff-only
标志确保你没有做真正的合并)。使用rebase的时间是你正在处理foo
并在那里进行多次提交(并没有推送它)并且有人已经承诺掌握。 Rebase将使您的分支机构更新,而无需进行合并提交。
我可以,但它会是相同的图表,但foo
现在指向master,或者更准确地说,提交G
。没有创建新的提交,因此除了移动foo
引用之外,存储库将保持不变。
PS。我在虚拟存储库本地测试了这个,以确保,因为在这种情况下使用rebase不是我以前尝试过的。