git rebase: 合并/截取commit及分支间的commit拼接

本文详细介绍了如何使用git rebase进行commit合并与删除,包括在单一分支上的操作和涉及多个分支的复杂操作,如合并commit、删除某段commit、分支间commit的拼接,以及忽略中间的支线。
摘要由CSDN通过智能技术生成

git rebase: 合并/截取commit 及 分支间的commit拼接

一. 只涉及单独分支的操作

1. 合并commit

当前分支状态:

A--------B-------C--------D 
        |--想要合并的commit--|

预计合并之后的状态:

A--------B'(包含C, D)

使用命令:
git rebase -i [start] [end]

startend遵循左开右闭原则
1. -i:启用交互,只有加了这个,才会有下面一步步的操作提示
2. [start]: 如果想要合并B----C----D,则[start]B 的前一个commit, 即A
3. [end]: 如果想要合并B----C----D,则[end]D ; 如果缺省的话,默认为当前head 指向的commit

Note:[start][end]均为commit-ish,有如下表示方法

----------------------------------------------------------------------
|    Commit-ish             |                Examples
----------------------------------------------------------------------
|  1. <sha1>                | dae86e1950b1277e545cee180551750029cfe735
|  2. <describeOutput>      | v1.7.4.2-679-g3bee7fb
|  3. <refname>             | master, heads/master, refs/heads/master
|  4. <refname>@{
  <date>}    | master@{yesterday}, HEAD@{5 minutes ago}
|  5. <refname>@{
  <n>}       | master@{1}
|  6. @{
  <n>}                | @{1}
|  7. @{-<n>}               | @{-1}
|  8. <refname>@{upstream}  | master@{upstream}, @{u}
|  9. <rev>^                | HEAD^, v1.5.1^0
| 10. <rev>~<n>             | master~3
| 11. <rev>^{
  <type>}        | v0.99.8^{commit}
| 12. <rev>^{}              | v0.99.8^{}
| 13. <rev>^{/<text>}       | HEAD^{/fix nasty bug}
| 14. :/<text>              | :/fix nasty bug

上表整理自StackOverFlow, 更多commit-ish理解可点这里

示例
1. 当前状态:

commit
file

2. 输入命令:

git rebase -i 869af45 9728be5

869af459728be5hashID的简写形式,git会查找以其开头的hashID

此时会以编辑器(vim)形式进入第一个交互:

pick f9a2daa add 1.txt
pick dd0326f add 2.txt
pick 9728be5 add 3.txt

# Rebase 869af45..9728be5 onto 869af45 (3 commands)
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, bu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值