Git:对已经合并的分支进行rebase是否安全?

时间:2016-05-07 08:39:19

标签: git version-control merge branching-and-merging rebase

rebase本地(私人)feature branch是否安全,如果它已经合并到master,我决定稍后通过{{1}调整该功能} rebasing当前提示上的feature branch?我知道它是master共享分支的死刑判决,但在这种情况下是否安全,只要分支本身是私有?据我所知,此方案中的rebase只会在公共历史记录之上添加rebasing中的这些分歧更改以及完全私有的分支的一些本地更改我。所以不应该受到伤害,对吧?是否有任何特殊情况,这种模式会导致问题?

修改

要考虑的一个问题是,如果我在功能分支上执行master来清理提交历史记录,例如

interactive rebase

并且这个分支已经合并到master,然后两个分支对不同的提交引入相同的更改吧?这当然是不可取的。

2 个答案:

答案 0 :(得分:1)

所以你有一个合并到t.detach()的功能分支, 然后在master和功能分支中添加了更多提交。 那就是:

master

A---B---C---D---E topic / \ D---E---F---G---M---X---Y master 上修改功能分支时, 这实际上会插入在master中添加的提交, 在功能分支中本地添加的提交前面。 正如你自己写的那样。 这应该工作正常。 你会得到:

master

这种模式不应造成任何伤害。 任何变基都有通常的风险, 您在功能分支中的提交可能与master中添加的更改冲突。 这与"模式"无关, 这只是任何改组和合并操作的常见风险。

我还要引用@VonC的附录:

  

不仅该模式不会造成任何伤害,而且有助于最大限度地减少 A---B---C D'---E' topic / \ / D---E---F---G---M---X---Y master 重播的提交次数,同时将最新的git rebase次提交集成到master环境中,帮助您在稍后将feature合并到feature之前在本地解决冲突。 (stackoverflow.com/a/804178/6309)。

答案 1 :(得分:0)

就像文件说的那样:

Rebase是一种很好的方式来同步"通过注意保存当前提交,在rebase上应用提交,然后应用已保存的提交。

这里的情景:

      A---B---C topic
     /
D---E---F---G master

从这一点来看,以下任一命令的结果:

git rebase master git rebase主题 将是:

              A'--B'--C' topic
             /
D---E---F---G master

不要忘记,像合并一样,rebase应该导致合并冲突,这是Git的生活。