我有一个git resposition,看起来有点像这样:
C0 ---- C1 ---- ... ---- C12 ---- C14 (dev)
\
\---- C13 (abandoned)
“dev”是主要的开发分支,“discouped”是一个实验,我们可能希望在将来的某个时候重新审视它。
我想压扁。
C1
进入一次提交,得到如下结果:C0 ---- C1' ---- C14' (dev)
\
\---- C13' (abandoned)
我可以在dev上使用交互式rebase
C0 ---- C1' ---- C14' (dev)
然后查看
C12
和cherry pickC1'
asC13
。但是,有没有更简单的方法可以做到这一点,也可以扩展到处理更多分支和不同提交(但一些共享历史将被压缩)的更复杂的图表,而无需大量手动工作? 最佳答案
你在正确的轨道上。首先,忽略C13
并用一个交互式的rebase压缩到C0 - C1' - C14'
。但不要随意挑选,而是将C13
重设为C1'
。git
应该检测到这基本上是一个禁止操作的操作,您将完成。所以:
git rebase --onto C1_new C12 C13