Git rebase的一些运用场景

Git rebase的使用场景

最近在为github开源项目修修bug。提了几个Pull Request。又巩固了下git的知识,熟练了git的使用。

我在提交PR后,发现有个地方改错了。那怎么改呢,其实很简单,只需要再次push 到自己fork的repo就可以了。

PR的branch是和自己fork的repo的branch联动的。

但是,这又有个问题,我再次commit后,就会有两个commit。这两个commit其实解决的都是同一个问题。
在正式的repo中尽量要精简commit,同一个问题的多个commit需要squash为一个commit。

于是,我就得用git rebase 来帮我完成了。

精简commit

通过这个命令,可以重新修改最近的两个commit

1
git rebase -i HEAD~2

执行命令后会弹出一个vim编辑:

1
2
pick 01d1124 Message....
pick 6340aaa Message....

然后,将要squash的commit的那行最前面的pick 改为 squash

1
2
p 01d1124 Message....
s 6340aaa Message....

删掉commit

1
2
3
git rebase -i HEAD~n
# 在vim中直接把不要commit那行删掉即可

改commit名字

大项目的commit的名字都有比较严格的要求,有些时候,我们要改下自己不规范的命名的话。
可以也可以用 git rebase.

很简单,同样先用git rebase -i HEAD~n
在需要改的commit的最前面把 pick 改为reword

1
2
pick 01d1124 Message....
reword 6340aaa Message....