zoukankan      html  css  js  c++  java
  • 使用Git-Rebase合并多次提交

    在平时的软件开发中,我们每个team使用一个公共仓库(这里说的是Git仓库)。每当有一个新的需求,我们会拉出一个特性分支,然后在这个特性分支上做开发以及提交个人的代码。

    我有个习惯就是:为了确保代码的安全性,每天下班前会把个人的本地仓库代码提交到公共仓库。由于每天开发过程中由于各种原因会提交几次代码到个人仓库,这样就导致下班提交代码到公共仓库时,一次提交好几个记录,这样就会是的公共仓库有各种乱七八糟的所有增量修改历史。为了避免太多的提交而造成版本控制的混乱,通常我们推荐将这些提交合并成一个。

    关于Git的常用命令,推荐翻阅Git常用命令

    使用rebase合并提交

    想要合并n条提交记录,有两个方法:

    1. 从HEAD版本开始往过去数 n 个版本
    git rebase -i HEAD~n
    
    1. 指定一个合并区间 startpointendpoint,注意:该区间指定的是一个前开后闭的区间,意思就是startpoint不参与合并
    git rebase -i  [startpoint]  [endpoint]
    
    • -i 的意思是 --interactive,即弹出交互式的界面让用户编辑完成合并操作
    • startpointendpoint 指定了一个编辑区间
    • 如果不指定endpoint,则该区间的终点endpoint默认是当前分支HEAD所指向的提交

    操作

    1. 执行 git log 查看提交历史,接下来我们将三次提交合并为一个提交

    file

    1. 执行 git rebase -i HEAD~3 ,弹出操作窗口

    file

    操作说明:

    • pick:保留该commit(缩写:p)
    • reword:保留该commit,但我需要修改该commit的注释(缩写:r)
    • edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
    • squash:将该commit和前一个commit合并(缩写:s)
    • fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
    • exec:执行shell命令(缩写:x)
    • drop:我要丢弃该commit(缩写:d)

    根据我们的需求,我们将commit内容编辑如下:

    pick 85697ee This is first commit.
    squash ee461c1 This is second commit.
    squash 326e415 This is third commit.
    

    上面的意思就是把第二次、第三次提交都合并到第一次提交上。

    1. 然后保存退出,Git会压缩提交历史。如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了

    修改以后要记得敲下面的命令:

    git add .  
    
    git rebase --continue  
    

    如果你想放弃这次压缩的话,执行以下命令:

    git rebase --abort
    
    1. 如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口

    file

    我们将三次提交信息合并成一个提交信息

    Commit feature branch!
    
    #This is first commit.
    #This is second commit.
    #This is third commit.
    
    1. 编辑完保存即可完成commit的合并了,我们执行一下 git log

    file

    然后提交到公共仓库,有没有感觉提交记录清爽了许多,快来试试吧!

    欢迎访问我的个人博客

    关注公众号:JAVA九点半课堂,这里有一批优秀的程序猿,加入我们,一起探讨技术,共同进步!回复“资料”获取 2T 行业最新资料!

  • 相关阅读:
    PHP 使用 GET 传递数组变量
    Java实现 蓝桥杯 算法训练 数据交换
    Java实现 蓝桥杯 算法训练 数据交换
    Java实现 蓝桥杯 算法训练 数据交换
    Java实现 蓝桥杯 算法训练 景点游览
    Java实现 蓝桥杯 算法训练 景点游览
    Java实现 蓝桥杯 算法训练 景点游览
    Java实现 蓝桥杯 算法训练 二进制数数
    Java实现 蓝桥杯 算法训练 二进制数数
    Java实现 蓝桥杯 算法训练 二进制数数
  • 原文地址:https://www.cnblogs.com/noodlesmars/p/11864619.html
Copyright © 2011-2022 走看看