我有一个主分支,我希望保留所有历史记录,包括已分叉并合并回主分支的分支,以及标记:
(v1.2.3)
T
A--B--C--D--E--F--G--H (master)
\ /
I----J (topic/1)
现在,我想将一个不相关的提交X插入主分支中的特定位置(例如在提交A之后),如下所示:
(v1.2.3)
T
A--X--B'-C'-D'-E'-F'-G'-H' (master)
\ /
I'--J' (topic/1)
我认为我想做的事情是filter-branch和cherry-pick的组合,类似于this answer中最后建议的方法。
我该怎么做?
注意:我知道提交X不会引入任何冲突。此外,我想将此解决方案扩展为多个提交(我目前有一个脚本,在主服务器上给定SHA,知道在主提交后需要插入哪些提交)。
答案 0 :(得分:0)
你可以通过检查A,执行提交X,然后在保留合并的同时将master重新绑定到X来实现。
git checkout A
git checkout master
git rebase -p X
不幸的是,这不会保留标签。有办法解决这个问题,但是从你对帖子的评论中可以找到解决潜在问题的更好方法。