通过压缩对选定检查点的提交来简化存储库历史记录

问题描述 投票:0回答:1

假设我有一个存储库,其中包含许多分支的复杂历史,它们之间的合并、分歧、相反方向的进一步合并、变基等。然而,有一个

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 squash
1个回答
0
投票

当然,最简单的用户友好方法是从您想要保留的第一个提交(这将是新的孤立分支中的第一个提交)创建一个新的孤立分支,然后使用恢复继续其他提交

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"

等等

© www.soinside.com 2019 - 2024. All rights reserved.