【Git】rebase 用法小结(转)

1.合并多个commit为一个完整commit

  git rebase -i  [startpoint]  [endpoint]

其中-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。
在查看到了log日志后,我们运行以下命令:
git rebase -i 36224db

git rebase -i HEAD~3 

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

2.将某一段commit粘贴到另一个分支上

(如果只是复制某一两个提交到其他分支,建议使用更简单的命令:git cherry-pick
git rebase [startpoint] [endpoint] --onto [branchName]
其中,[startpoint] [endpoint]仍然和上一个命令一样指定了一个编辑区间(前开后闭),--onto的意思是要将该指定的提交复制到哪个分支上。
所以,在找到C(90bc0045b,较早)和E(5de0da9f2,较新)的提交id后,我们运行以下命令:
例如:    git  rebase   90bc0045b^   5de0da9f2   --onto master
参考:https://www.jianshu.com/p/4a8f4af4e803
原文地址:https://www.cnblogs.com/i-shu/p/13401677.html