重新启动具有子分支的分支

时间:2017-04-30 22:24:24

标签: git

我公司的政策是任何拉取请求都必须使用重新分支。我有一个本地Dev分支,它有'任务'分支:

remote master --------
     \   
     Dev ------------------
            \-----task1  \
                          \---task2

当主人得到更新时,我在主人身上重新开发。什么是管理分支task1和task2的最佳方式。他们仍在继续努力。重新分配每个任务分支似乎是我能看到的唯一方式。

2 个答案:

答案 0 :(得分:6)

首先尝试在保留合并时执行rebase dev:

git checkout Dev
git rebase --preserve-merges master

这应该使task1和2也正确地重新定位。

请参阅" What exactly does git's “rebase --preserve-merges” do (and why?)"

答案 1 :(得分:3)

如果你有很多任务分支,那么我能想到的最好是暂时章鱼将它们与Dev合并到一个临时分支中,然后使用--preserve-merges将temp重新加入master。然后将分支标签重置到适当的位置。

$ git checkout -b temp Dev && git merge task1 task2
$ git rebase master --preserve-merges
$ git checkout Dev   && git reset --hard temp^
$ git checkout task1 && git reset --hard temp^2
$ git checkout task2 && git reset --hard temp^3
$ git branch -D temp

它仍然是很多命令,但是:

  1. 由于树本身就被保留了,它使您不必手动重建图形,即不必将每个任务分支移植到重新设置的Dev分支的相应提交上的人为错误。这只是将Dev和任务分支标记重置到正确的父提交上,这与它们在章鱼合并中使用/命名的顺序相对应。

  2. 如果你必须做很多这样的事情,这应该是简单的脚本和用作别名。