文章目录
- 需求
- Rebase / Pick / squash
- Vim 的快速全局字符串替换
需求
我想把如下的提交 commit,变成一个 Commit,并且合并这些 Commit 的消息到一个节点
Rebase / Pick / squash
我合并到 5e59217
这个hash
上,这样合并后会保留两个 Commit
git rebase -i 5e59217
然后,痛苦的事情来了,我需要保留第一条的 pick
,其他的 Commit
前面都要变成 squash
,也可以简写成 s
pick 8a1e029 chore: save2
pick 133ac18 1
pick 32fe281 2
pick 779ecf8 3
pick dd3b48b 4
pick c857685 5
pick f8a6eb1 6
pick 4bd39c4 7
pick d242a45 8
pick b17d658 9
pick d58f74d 10
什么是
squash
?
Vim 的快速全局字符串替换
如果在插入模式的话,按一下 ESC
,然后按一下 :
冒号进入命令模式,之后输入
:%s/pick/s/g
即可替换所有 pick
为 s
之后再进入编辑模式把第一行改成 pick
,然后合并即可
最后合并的节点就只剩两个了,其中最新的节点commit
包含之前所有的 commit
信息