我公司的政策是任何拉取请求都必须使用重新分支。我有一个本地Dev分支,它有'任务'分支:
remote master --------
\
Dev ------------------
\-----task1 \
\---task2
当主人得到更新时,我在主人身上重新开发。什么是管理分支task1和task2的最佳方式。他们仍在继续努力。重新分配每个任务分支似乎是我能看到的唯一方式。
答案 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
它仍然是很多命令,但是:
由于树本身就被保留了,它使您不必手动重建图形,即不必将每个任务分支移植到重新设置的Dev分支的相应提交上的人为错误。这只是将Dev和任务分支标记重置到正确的父提交上,这与它们在章鱼合并中使用/命名的顺序相对应。
如果你必须做很多这样的事情,这应该是简单的脚本和用作别名。