我会遇到这个Git rebase工作流程的麻烦吗?

时间:2010-10-25 18:29:21

标签: git git-rebase

我刚刚了解了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)。


以下是我要使用rebase的方法。

是时候在foo分支上进行一些更新了,但是它与主分支不同步。

  1. 只需git rebase master在最新的foo分支上包含F和G提交即可吗?

  2. 您可以修改我的图表以显示我之后的提交历史记录会是什么样的吗?

1 个答案:

答案 0 :(得分:2)

  1. 假设,是的,这样做是可以的,因为git会检测到foo已经合并到主人,并且foo快进到状态master是这与git merge master会做同样的事情,也就是说,foo与master相同。

    但是,我知道这里只使用git merge,因为这对我来说更合乎逻辑(你使用merge来做快进,如果你想要它甚至有一个--ff-only标志确保你没有做真正的合并)。使用rebase的时间是你正在处理foo并在那里进行多次提交(并没有推送它)并且有人已经承诺掌握。 Rebase将使您的分支机构更新,而无需进行合并提交。

  2. 我可以,但它会是相同的图表,但foo现在指向master,或者更准确地说,提交G。没有创建新的提交,因此除了移动foo引用之外,存储库将保持不变。

  3. PS。我在虚拟存储库本地测试了这个,以确保,因为在这种情况下使用rebase不是我以前尝试过的。