zoukankan      html  css  js  c++  java
  • git 几个commit点合并成一个commit点

     在用git做版本控制器的时候,经常会遇到以下情况:

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

       2、当你做功能的时候,你会遇到需要零时提交的情况(比如你在做A任务,突然来了B任务,在你A任务分支上你会先commit一次,等B任务做完,再回来继续做A,做完之后会再次commit),此时你的一个任务有会有多个commit存在。

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

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

     

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

    git rebase -i commitId


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

     

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

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

     

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

     

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

     

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

     

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

     

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

    另外,rebase --abort 可以退出
    ---------------------
    作者:Fishing_Fly
    来源:CSDN
    原文:https://blog.csdn.net/u013276277/article/details/82470177
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    iOS-iOS调用相机调用相册【将图片保存到本地相册】
    iOS-image图片压缩
    iOS-沙盒目录
    iOS-Xcode代码统计
    Django基础之Model操作
    Django objects.all() ,objects.get() ,objects.filter()之间的区别
    django从1.7升级到1.9后 提示:RemovedInDjango110Warning
    关闭TCP中135、139、445、593、1025 等端口的操作方法 (转)(记录下)
    oracle decode函数和 sign函数
    Apache的主要目录和配置文件详解
  • 原文地址:https://www.cnblogs.com/FineDay/p/10905836.html
Copyright © 2011-2022 走看看