Yulong Niu

个人博客

两个git的rebase命令应用

Posted at — Nov 11, 2016

介绍两个git rebase的应用场景,一个是合并commits记录,另一个是贡献代码。

1. 合并commit记录

假定有多条commits,按照离当前时间从近至远依次为:c1b2b1a1。希望合并c1b2b1,即只保留c1a1。操作流程如下:

$ git rebase -i sha1id-of-a1

弹出的文本编辑器初始可能为:

pick sha1id-of-c1 c1
pick sha1id-of-b2 b2
pick sha1id-of-b1 b1
...

修改为:

pick sha1id-of-c1 c1
squash sha1id-of-b2 b2
squash sha1id-of-b1 b1
...

在弹出的文本编辑器中标记和注释commits

由于本地和远程记录不一致,需要强制合并。

$ git push -f origin mybranch

2. 贡献代码

Fork在GitHub对应的项目(famous/project,master分支)至自己账户(my/project),克隆至本地并添加远程地址:

$ git clone https://github.com/my/project.git
$ git remote add upstream https://github.com/famous/project.git
$ git checkout -b devbranch
$ git commit -a -m 'these commits'
$ git push origin devbranch
$ git checkout master
$ git pull upstream master
$ git checkout devbranch

$ git rebase master
## compare and merge the latest commits
$ git rebase --continue

## force push
$ git push -f origin devbranch

参考资料

  1. 合并分支

  2. 贡献代码

更新记录

2016年11月11日