本来以为git掌握几个基础命令就行了,面试时突然被面试官闻到了git rebase命令,直接懵逼了。回来一查会了还真有用,直接记录下来吧。
- 命令作用
协同开发过程中,自己本地不可避免的产生很多commit信息。push的时候显得特别杂乱,以往心情好的时候就会给最近的几个commit信息reset一下,然后重新提交commit信息。现在看来真TMSB。。。
git rebase的作用就是重新对某一段线性提交历史进行编辑、删除、复制、粘贴
功能1: 合并commit
命令格式
git rebase -i [startpoint] [endpoint]
合并的范围是前开后闭
eg:合并最近三条commit
git rebase -i HEAD~3
(合并了 head^2 head^ head)
进入编辑界面:
1.根据需求按指令编辑commit
- 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.编辑注释
功能2:复制某一段commit
git rebase [startpoint] [endpoint] --onto [branchName]
eg:git rebase HEAD~3 HEAD~1 --onto master
将当前分支的 head^2 head^ 复制到master分支上