介绍两个git rebase
的应用场景,一个是合并commits记录,另一个是贡献代码。
假定有多条commits,按照离当前时间从近至远依次为:c1
、b2
、b1
和a1
。希望合并c1
、b2
和b1
,即只保留c1
和a1
。操作流程如下:
$ 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
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
2016年11月11日