码迷,mamicode.com
首页 > 其他好文 > 详细

巧用 git rebase 合并多个 commit。

时间:2019-03-14 01:05:20      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:9.png   data   log   mba   idv   eid   java   图片   script   

一、为什么需要合并多个 commit 呢?
 
有时候,我们开发一个功能。
修修补补 commit 了很多次,过多的 commit 会显得很复杂。
不够直观,不能比较清晰查看那些 commit 是对应的那个功能。
所以,在这种情况下。我们需要整理一下 commit 的记录,让我们更好的管理提交记录。
 
 
二、具体合并多个 commit 的流程。
 
1、development 分支有四次 commit ,然后我准备合并 "add a.php" 和 "add b.php" 的两次 commit。
ps: 使用 git log 命令,查看 commit 记录。
技术图片
技术图片
 
2、然后执行命令:
$ git rebase -i d2bf14b495fe57583371be8d0a48c927a2da7eb9 7fc6da429881c5bca2705f61aac0e3a1a3c0b1c7
技术图片
ps: 命令说明
// -i 的含义是:--interactive, 即弹出交互式的界面让用户编辑完成合并操作 
// [startpoint] 指的是合并区间的起点。 
// [endpoint] 指的是合并区间的终点,默认是当前分支 HEAD 所指向的 commit。 

$ git rebase -i [startpoint] [endpoint] 

// 注意:这里的区间是一个前开后闭的区间。
技术图片

 ps: Commands 说明,以下单字符命令为简写命令。

  • p, pick: 保留该 commit。
  • r, reword: 保留该 commit,可以修改 commit 的注释。
  • e, eidt: 保留该 commit,但停下来修改该 commit (不仅仅是注释),可以用来解决 merge 冲突。
  • s, squash: 将该 commit 和 前面一个 commit 合并。
  • f, fixup: 将该 commit 和 前面一个 commit 合并,但不保留该提交的注释信息。
  • x, exec: 执行 shell 命令。
  • d, drop: 丢弃该 commit。
 
3、然后,编辑 commit 内容。将 "pick" 改成 "squash" 或者 "s",意思是将该 commit (add b.php)和 前面的 commit (add a.php) 合并。编辑完成后,保存并退出(wq!)。
技术图片
 技术图片
 
4、修改合并之后的 commit 注释。
技术图片

 

技术图片
5、编辑完合并 commit 的注释之后,就保存退出(:wq!)。
技术图片
技术图片
 
6、但是,在我们的一顿猛操作之后,我们进入了一个临时的分支(从 development 分支切出来的临时分支)。
技术图片
技术图片
 
7、那这个问题怎么解决呢?现在我们来基于这个临时分支,创建一个新的分支 feature/temp。
技术图片
技术图片
 
8、然后,我们再切回 development 分支,执行:git rebase feature/temp。
技术图片 
 
9、最后,看我们的 commit 记录,就已经把 "add a.php" 和 "add b.php" 的 commit 合并了。
技术图片
 技术图片

 

三、总结。
  • 这次合并多个 commit,主要用到的命令是:git rebase -i [startpoint] [endpoint]。
  • 合并完成之后,会进入一个临时分支。需要在 development 分支上 rebase 这个临时分支。
  • 我们可以通过 git log 命令,查看提交的记录。
 

巧用 git rebase 合并多个 commit。

标签:9.png   data   log   mba   idv   eid   java   图片   script   

原文地址:https://www.cnblogs.com/yxhblogs/p/10527271.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!