我公司的政策是任何拉取请求都必须使用重新分支.我有一个本地Dev分支,它有'任务'分支:
remote master --------
\
Dev ------------------
\-----task1 \
\---task2
Run Code Online (Sandbox Code Playgroud)
当主人得到更新时,我在主人身上重新开始.什么是管理分支task1和task2的最佳方式.他们仍在继续努力.重新分配每个任务分支似乎是我能看到的唯一方式.
首先尝试使用rebase dev,同时保留合并:
git checkout Dev
git rebase --preserve-merges master
Run Code Online (Sandbox Code Playgroud)
这应该使task1和2也正确地重新定位.
请参阅" 到底是什么混帐的' rebase --preserve-merges’做(为什么?) "
如果你有很多任务分支,那么我能想到的最好的办法就是临时将它们与 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
Run Code Online (Sandbox Code Playgroud)
它仍然有很多命令,但是:
由于树本质上是被保留的,因此它使您不必手动重建图,即,由于必须将每个任务分支移植到重新定位的 Dev 分支的正确相应提交上,从而减少了人为错误。只需将开发和任务分支标记重置到正确的父提交上即可,这对应于它们在章鱼合并中使用/命名的顺序。
如果您必须经常做这种事情,那么编写脚本并用作别名应该很简单。