git rebase 可以用来合并commit
应用场景: 当对某一个功能进行多次修改,并在本地进行多次commit时, 在push到远程的时候,为了让分支看起来简洁明了,可以将本地的多次commit 合并成一次commit, 进行远程push
例如本地进行了2次提交

其中后面两次修改TestView
是做的同一件事情, 在push之前可以先进行合并
可以使用 git rebase -i HEAD~2
命令编辑合并操作, 后面的数字如果是3就表示合并当前最后3次提交

pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)
这里只能将 pick c953922 再次修改TESTView
改为s c953922 再次修改TESTView
, 表示将它和前一次提交进行合并,由于pick f7aa123 修改TestView
的前一次提交没有包含在当前编辑的范围。

编辑完成,退出编辑,会进入到重新编辑的 注释页面,可以对每次提交的注释进行修改

message
和 message #2:
后面的注释可以重新编辑,编辑后退出,就会显示合并结果

进行git log 查看,可以看到两次提交合并成了一次提交,注释也进行了合并

注意:
如果合并时出错, 会生成一个新的分支,可以使用git rebase --abort
取消合并,重新操作

网友评论