git rebase合并多个commit

发布时间 2023-06-30 17:18:04作者: Sofiaღ

一、为什么要合并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,而是先合并代码,再提交。