Git学习 - 将几个commit合并成一个commit

时间:2024-05-22 15:12:07

Git学习 - 将几个 commit 合并成一个 commit

1、引言

我们在开发一个功能的时候,你觉得自己开发完成了代码也没啥问题,就把代码 commit 到本地仓库后 push 到了远程 并发送了 merge request,但是你的领导 merge 的时候发现有问题需要修改代码,然后你就按照要求把需要修改的代码修改完成后又commit 然后 push了 ,然而这个时候又来了一封邮件,领导又给你提出了一些其他的问题需要你再次修改代码,这样来来回回你就提交了好几个commit,看起来比较杂乱不清爽。

2、那么有没有一种方法可以将几个commit 合并成一个 commit 呢?

答案是有的

1、首先需要查看下提交记录: git log --online

Git学习 - 将几个commit合并成一个commit

需求是将上面的三个commit合并成一个commit。

2、开始合并

用到的命令是:git rebase -i commitId :这里面的 commitId 是你要合并的两个 commit 后所形成的一个commitId 需要跟着的 commitId , 在这里也就是第四个提交的 commit 的id。

-i 的参数是不需要合并的 commit 的 hash 值 ,然后我们就将进入 vi 编辑模式;

Git学习 - 将几个commit合并成一个commit

Git学习 - 将几个commit合并成一个commit

进入vi模式后,在键盘上敲i键进入insert模式。这时候先看看这里面的东西是什么含义;

  • pick 的意思是要会执行这个 commit
  • squash 的意思是这个 commit 会被合并到前一个commit

修改完成后,按esc键,冒号,输入wq进行保存。之后会继续跳转到commit message 的编辑界面:

注释中有写第一个commit信息和第二个commit信息 :

Git学习 - 将几个commit合并成一个commit

我合并这两个信息成一个commit信息。我这边合并成如下信息:

Git学习 - 将几个commit合并成一个commit

然后你就保存退出,跳回到最初的命令界面:

Git学习 - 将几个commit合并成一个commit

当看到 successfully 的字样就说明成功了。再git log看一下commit情况:

Git学习 - 将几个commit合并成一个commit

这样就将三个commit合并成了一个commit;