标签:blog http io os ar 使用 for sp div
git rebase在《git权威指南》一书中被翻译为变基,听着有些别扭吧,变基变基,变成库克了,在《pro git》中被翻译成衍合,所以以后git rebase均使用《pro git》中的翻译方式。
在git中将个分支中的修改整合到另一个分支的办法有两种:merge和rebase,现在又如下使用情景,在master分支的第3次提交产生一个分支dev,在这个dev分支上做了两次提交,而此时master分支由于某些原因又进行了两次提交,现在需要将dev分支和master分支合并,这时有两种方法实现,一种是merge一种是rebase。
使用merge时在dev分支中的提交不会发生变化,这对于有其他人使用次分支时很重要,但是这个操作会产生三个提交,包含一个合并提交,因此在将特性分支合并到主干master上时一般不使用merge;使用rebase操作看起来就像是顺序提交,方便管理,rebase操作的具体过程为:
- 确保工作区位于dev分支上:git checkout dev
- 执行衍合操作:git rebase master
- 如果有冲突需要先解决冲突,解决完冲突之后执行:git rebase --continue
- 如果想放弃这次操作可以执行:git rebase --abort
- 如果是想直接使用master分支取代此分支,可以执行:git rebase --skip
可以给rebase加上-i参数进行交互式rebase,
交互式rebase提供了一个简单易用的途径让你在和别人 分享提交之前对你的提交进行分割、合并或者重排序。在把从其他开发者处拉取的提交应用到本地时,你也可以使用交互式rebase对它们进行清理。如果你想在rebase的过程中对一部分提交进行修改,你可以在‘git rebase‘命令中加入‘-i‘或‘--interactive‘参数去调用交互模式。
git commit -i commit号
使用-i进行交互式rebase时会有一些交互式命令
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit‘s log message
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
例如可以使用pick命令改变提交的顺序,如果不会有冲突;使用squash命令,git会把这个提交和前一个提交合并成为一个新的提交,这会再次调用编辑器,可以在里面合并这两个提交的提交信息;如果指定进行‘edit‘操作,git会完成同样的工作,但是在对下一提交进行操作之前,它会返回到命令行让你对提交进行修正,或者对提交内容进行修改;交互式rebase的另外一个作用是丢弃提交,如果把一行删除而不是指定‘pick‘、‘squash‘和‘edit‘‘中的任何一个,git会从历史中移除该提交。
参考资料:
- http://book.douban.com/subject/3420144/
- http://book.douban.com/subject/6526452/
- http://blog.chinaunix.net/uid-27714502-id-3436706.html
- http://blog.csdn.net/lihaoweiv/article/details/7740031
git rebase使用
标签:blog http io os ar 使用 for sp div
原文地址:http://www.cnblogs.com/elvalad/p/4066133.html