美文网首页
git rebase

git rebase

作者: 尹晓剑 | 来源:发表于2017-11-22 10:31 被阅读0次

在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会从历史中移除该提交。

相关文章

网友评论

      本文标题:git rebase

      本文链接:https://www.haomeiwen.com/subject/hilnvxtx.html