我有一个非常混乱的 git 历史。我想压缩一堆较旧的提交(不包括最后一个)。
我知道如何压缩我的最后一次n
提交。但这是不同的。在这里,我连续提交n1
了n2
我想压缩为一个n2
的提交,而在我有提交历史之后,我想保留到最后一个。
所以,如果我目前的历史是这样的:
---- n1 --- n2 -------- m
Run Code Online (Sandbox Code Playgroud)
我想挤压n1
,n2
所以它最终看起来像这样:
---- n1n2 -------- m
Run Code Online (Sandbox Code Playgroud)
wheren1n2
是包含压缩内容的单个提交n1
到n2
。
我该怎么做?从n2
到对历史有什么影响m
?
也就是说,将每一个哈希从承诺n2
到m
变化的是我想要做的后果?
lud*_*ico 26
启动交互式变基:
git rebase -i HEAD~n
Run Code Online (Sandbox Code Playgroud)
(n
历史上你想回到多远的地方)
您的默认编辑器将打开。在顶部,n
将按相反顺序显示您最新提交的列表。例如:
pick a5f4a0d commit-1
pick 19aab46 commit-2
pick 1733ea4 commit-3
pick 827a099 commit-4
pick 10c3f38 commit-5
pick d32d526 commit-6
Run Code Online (Sandbox Code Playgroud)为要压缩的所有提交指定squash
(或快捷方式s
)。例如:
pick a5f4a0d commit-1
pick 19aab46 commit-2
squash 1733ea4 commit-3
squash 827a099 commit-4
pick 10c3f38 commit-5
pick d32d526 commit-6
Run Code Online (Sandbox Code Playgroud)
Git 应用该更改和它之前的更改,并使您将提交消息合并在一起。
保存并退出。
Git 将应用所有更改并再次打开您的编辑器以合并三个提交消息。您可以修改提交消息或保持原样(如果是这样,所有提交的提交消息将被连接)。
你完成了!您选择的提交都将与前一个提交一起压缩。