我需要用这样的一次提交来恢复整个分支:
[topic]
o---o---o-------X
/
| [master]
---o---o---o
提交X
必须具有像master~2
(主题分支的起点)这样的状态
我的解决方案是:
git rev-list --reverse master..topic | while read SHA; do
git revert -n ${SHA}
done
git commit -m "Reverted topic branch"
有没有更好(更短)的解决方案?
目的
想象一下,我有一种几乎基于 git-flow 的 repo。
[release-3]
o---o---o---o
/ \ [fix-for-rc-3]
/ o---o---o
/
| [development]
---o---o---o
我有一个development
分支,即将到来release-3
的分支和一个所谓的hot-fix-feature-for-rc-3
分支。在这个分支中,我正在做一些丑陋的黑客来完成我的发布,但我根本不想要它,development
因为更多“正确”的解决方案已经在这里登陆,但由于某种原因不能应用于release-3
分支。所以,我必须做以下事情......
[release-3]
o---o---o---o--------------------M
/ \ [fix-for-rc-3] /
/ o---o---o----------------X
/ \
| \[development]
---o---o---o---------------------------------D
我必须合并fix-for-rc-3
到一个release-3
(点 M),然后做一个“revert-all-this-shit”提交(点 X)并合并它development
(点 D)所以这段代码永远不会到达这里,即使整个release-3
分支被合并development
然后释放完成。
这就是为什么我需要恢复整个分支......
问题
虽然解决了根本问题,但如果topic
已经合并到分支,则仍然存在获取分支点的问题release
merge-base
。