使用Git-Rebase合并屡次提交

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

我有个习惯就是:为了确保代码的安全性,天天下班前会把我的的本地仓库代码提交到公共仓库。因为天天开发过程当中因为各类缘由会提交几回代码到我的仓库,这样就致使下班提交代码到公共仓库时,一次提交好几个记录,这样就会是的公共仓库有各类乱七八糟的全部增量修改历史。为了不太多的提交而形成版本控制的混乱,一般咱们推荐将这些提交合并成一个。shell

关于Git的经常使用命令,推荐翻阅Git经常使用命令安全

使用rebase合并提交

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

1.从HEAD版本开始往过去数 n 个版本3d

git rebase -i HEAD~n

2.指定一个合并区间 startpointendpoint,注意:该区间指定的是一个前开后闭的区间,意思就是startpoint不参与合并版本控制

git rebase -i  [startpoint]  [endpoint]
  • -i 的意思是 --interactive,即弹出交互式的界面让用户编辑完成合并操做
  • startpointendpoint 指定了一个编辑区间
  • 若是不指定endpoint,则该区间的终点endpoint默认是当前分支HEAD所指向的提交

操做

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

file

2.执行 git rebase -i HEAD~3 ,弹出操做窗口blog

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内容编辑以下:rem

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

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

3.而后保存退出,Git会压缩提交历史。若是有冲突,须要修改,修改的时候要注意,保留最新的历史,否则咱们的修改就丢弃了

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

git add .  

git rebase --continue

若是你想放弃此次压缩的话,执行如下命令:

git rebase --abort

4.若是没有冲突,或者冲突已经解决,则会出现以下的编辑窗口

file

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

Commit feature branch!

#This is first commit.
#This is second commit.
#This is third commit.

5.编辑完保存便可完成commit的合并了,咱们执行一下 git log

file

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

欢迎访问个人我的博客

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

相关文章
相关标签/搜索