Git: 挤压分支间共享的材质
Git: squashing material shared between branches
我有一个 git 存储库,看起来有点像这样:
C0 ---- C1 ---- ... ---- C12 ---- C14 (dev)
\
\---- C13 (abandoned)
'dev' 是主要的开发分支,'abandoned' 是一个我们可能希望在未来某个时候重新访问的实验。
我想将 C1
...C12
压缩成一个提交,得到这样的东西:
C0 ---- C1' ---- C14' (dev)
\
\---- C13' (abandoned)
我可以在 dev 上使用交互式变基来获得
C0 ---- C1' ---- C14' (dev)
然后查看 C1'
并挑选 C13
作为 C13'
。但是有没有更简单的方法来做到这一点,它也可以扩展到处理具有更多分支和不同提交的更复杂的图表(但一些共享的历史被压缩)而不需要大量的手动工作?
你走在正确的轨道上。首先,忽略 C13
并通过交互式变基压缩到 C0 - C1' - C14'
。但是不要挑剔,而是将 C13
变基为 C1'
。 git
应该检测到这基本上是一个空操作,您将完成。所以:
git rebase --onto C1_new C12 C13
我有一个 git 存储库,看起来有点像这样:
C0 ---- C1 ---- ... ---- C12 ---- C14 (dev)
\
\---- C13 (abandoned)
'dev' 是主要的开发分支,'abandoned' 是一个我们可能希望在未来某个时候重新访问的实验。
我想将 C1
...C12
压缩成一个提交,得到这样的东西:
C0 ---- C1' ---- C14' (dev)
\
\---- C13' (abandoned)
我可以在 dev 上使用交互式变基来获得
C0 ---- C1' ---- C14' (dev)
然后查看 C1'
并挑选 C13
作为 C13'
。但是有没有更简单的方法来做到这一点,它也可以扩展到处理具有更多分支和不同提交的更复杂的图表(但一些共享的历史被压缩)而不需要大量的手动工作?
你走在正确的轨道上。首先,忽略 C13
并通过交互式变基压缩到 C0 - C1' - C14'
。但是不要挑剔,而是将 C13
变基为 C1'
。 git
应该检测到这基本上是一个空操作,您将完成。所以:
git rebase --onto C1_new C12 C13