Git学习 - 将几个 commit 合并成一个 commit
1、引言
我们在开发一个功能的时候,你觉得自己开发完成了代码也没啥问题,就把代码 commit 到本地仓库后 push 到了远程 并发送了 merge request,但是你的领导 merge 的时候发现有问题需要修改代码,然后你就按照要求把需要修改的代码修改完成后又commit 然后 push了 ,然而这个时候又来了一封邮件,领导又给你提出了一些其他的问题需要你再次修改代码,这样来来回回你就提交了好几个commit,看起来比较杂乱不清爽。
2、那么有没有一种方法可以将几个commit 合并成一个 commit 呢?
答案是有的
1、首先需要查看下提交记录: git log --online
需求是将上面的三个commit合并成一个commit。
2、开始合并
用到的命令是:git rebase -i commitId
:这里面的 commitId 是你要合并的两个 commit 后所形成的一个commitId 需要跟着的 commitId , 在这里也就是第四个提交的 commit 的id。
-i 的参数是不需要合并的 commit 的 hash 值 ,然后我们就将进入 vi 编辑模式;
进入vi模式后,在键盘上敲i键进入insert模式。这时候先看看这里面的东西是什么含义;
- pick 的意思是要会执行这个 commit
- squash 的意思是这个 commit 会被合并到前一个commit
修改完成后,按esc键,冒号,输入wq进行保存。之后会继续跳转到commit message 的编辑界面:
注释中有写第一个commit信息和第二个commit信息 :
我合并这两个信息成一个commit信息。我这边合并成如下信息:
然后你就保存退出,跳回到最初的命令界面:
当看到 successfully 的字样就说明成功了。再git log看一下commit情况:
这样就将三个commit合并成了一个commit;