git rebase合并多个commit
一、为什么要合并commit?
一般要merge到master的时候才会有这个要求,清晰明了的commit有利于团队维护。
二、什么是git rebase?
含义:rebase的意思是变基,‘re’前缀在英语里是‘再’的意思,'base':基础。
命令:
- pick:正常选中
- squash:选中,会将当前commit与上一个commit合并
- fixup:与squash相同,但不会保存当前commit的提交信息
命令还有很多,但需要记住的就有pick和squash,squash在使用时往往使用缩写就好:s。
三、使用git rebase
1. 方法一:git rebase -i <主干commit hash>;
2. 方法二:git rebase -i HEAD~5 合并最近5个。这里重点介绍方法二。
(1)控制台输入命令打开界面
#后面的注释是命令解释
在控制台输入 上述命令后会出现一个vim界面。按'i'健(insert:插入)开始操作。
(2)把除了第一行pick以外的所以pick改成s
这样第2行到第五行的commit都会合并到一行,5个commit就变成一个了,在此同时这个唯一的commit也会包括合并过来4个commit的信息。
(3)保存并退出
按esc键后,输入:wq ,按下enter键保存并退出vim界面。
(4)点击继续报错:'could not read log file '.git/rebase-merge/message''
重复第三步,按esc,输入:wq,按下enter退出保存。
观察分支,已经回到了正常的分支,终端也提示:Successfully rebased
(5)git commit --amend修改唯一一个commit的信息
git commit --amend -m '信息'
(6)git push -f 推送。不要用vscode菜单,直接在终端输入命令。
git push -f其实就是 git push --force ,将自己的本地的代码直接推送到仓库,以自己的为准,其他人的会被覆盖。因为这个分支只有我自己在用,所以我就直接force了。
如果是和别人公用的话,则最好别用force,而是先合并代码,再提交。