假设我有一个存储库,其中包含许多分支的复杂历史,它们之间的合并、分歧、相反方向的进一步合并、变基等。然而,有一个
master
分支是重要的分支,并且在它(它们没有被标记,但它们可能是),其中所有分支在某个点上尖端(并且没有受到变基)。
我可以(轻松地)将整个存储库减少到只有这些检查点,将它们压缩为单个提交吗?例如。减少这样的事情:
A--C--F
/ \
--#1--B--E--#2--I--#3--K--#4
\ /
D--G--H--J
到此
--#1--#2--#3--#4
假设我不关心其他分支、中间提交消息或保留 SHA。
我想我应该向后工作?也就是说,第一个壁球#4
A--C--F
/ \
--#1--B--E--#2--I--#3--#4
\ /
D--G--H--J
然后#3
A--C--F
/ \
--#1--B--E--#2--#3--#4
最后#2
--#1--#2--#3--#4
但是我会使用什么命令。有更简单的顺序/工作流程吗?有什么陷阱吗?
当然,最简单的用户友好方法是从您想要保留的第一个提交(这将是新的孤立分支中的第一个提交)创建一个新的孤立分支,然后使用恢复继续其他提交
git restore --staged --worktree --source second-checkpoint-commit -- .
git commit -m "second chrckpoint"
git restore --staged --worktree --source third-checkpoint-commit -- .
git commit -m "third checkpoint"
等等