git 几个commit点合并成一个commit点

 在用git作版本控制器的时候,常常会遇到如下状况:git

   一、在作1个功能的时候,你本身以为代码没问题了,就本地commit,而后提交代码,在gitlab上发起和并请求,老大看完以后,以为你还有修改的地方,把你的代码打回来从新修改,改完以后,本地commit,推到远程,再次发起合并。到此功能作完,可是作完以后发现,你的一个功能commit了两次,固然根据实际状况有些时候你为了作一个功能,来回不止两次,这样子的提交会让这个分支看起来有点杂乱。那么你会想要将你的几回commit合并成一个commit后,再提交,那样子分支看上去会很是清爽。gitlab

   二、当你作功能的时候,你会遇到须要零时提交的状况(好比你在作A任务,忽然来了B任务,在你A任务分支上你会先commit一次,等B任务作完,再回来继续作A,作完以后会再次commit),此时你的一个任务有会有多个commit存在。this

    本文的主要目的是教你怎样将git中屡次commit合并成一个commit。.net

(1)git log看一下当前分支的提交状况,下图中有三个commit点。从先到后是:add 1 line,add 2 line, add 3 line。需求是:把add 2 line, add 3 line这两个commit点合并成一个commit点。3d

 

 

(2)开始合并,敲下面这个命令:这里面的commitId是你要合并的两个commit后所造成的一个commitId须要跟着的commitId。在这边也就是add 1 line的commitId.版本控制

git rebase -i commitIdblog

 


其中,-i 的参数是不须要合并的 commit 的 hash 值,这里指的是第一条 commit, 接着咱们就进入到 vi 的编辑模式hash

 

 

 

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

pick 的意思是要会执行这个 commit
squash 的意思是这个 commit 会被合并到前一个commit
咱们这边须要将"add 3 line"这个commit合并前前一个commit,也就是合并到“add 2 line”的commit中,那就须要修改为以下的:io

 

 

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

 

 

 

 

 

注释中有写第一个commit信息和第二个commit信息,如今须要你合并这两个信息成一个commit信息。我这边合并成以下信息:

 

 

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

 

 

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

 

 

从图中就看到已经将add 2 line和add 3 line的commit合并成了this is combination of 2 commit。

相关文章
相关标签/搜索