git rebase

来源:互联网 发布:上海招聘seo引擎优化 编辑:程序博客网 时间:2024/06/06 14:25

git rebase 命令是用来改变一串提交以什么为基础的。此命令至少需要提交将迁往的分支名。默认情况下,不在目标分支中的当前分支提交会变集。

git rebase 的一个常见用途是保持你正在开发的一系列提交相对于另一个分支是最新的,那通常是 master 分支或者或者来自另一个版本库的追踪分支。

例如,最初,topic 分支是从 master~4 提交处开始的。现在要使 topic 的一系列提交相对于 master 是最新的,可以使用:

$ git checkout topic$ git rebase master

或者

$ git rebase msater topic

在这种情况下使用 git rebase 命令通常称为向前移植。特性分支 topic 已经向前移植到了 master 分支。

git rebase 命令的 –onto 选项把一条分支上的开发线整个移植到完全不同的分支上。
把 feature 分支从 maint 分支迁移到 master 分支。(feature 分支是从 maint^ 处开始的)

$ git rebase --onto master maint^ feature

变基操作一次只迁移一个提交,从各自原始提交位置迁移到新的提交基础。因此,每个移动的提交都可能有冲突需要解决。
如果发现冲突,rebase 操作会临时挂起进程以便你可以解决冲突。一旦冲突解决了,并且索引已经更新了,就可以用 git rebase –continue 命令恢复变基操作。该命令会提交解决的冲突然后处理要变基的下一个提交。
在检查变基冲突的时候,可以通过 git rebase –skip 来通知 git rebase 跳过这个提交,移动到下一个提交。可以用 git rebase –abort 来中止操作,并把版本库恢复到发出 git rebase 命令之前的状态。

重新排序、编辑、删除,吧多个提交合并成一个,把一个提交分离成多个,这都可以使用 git rebase 命令的 -i 或者 –interactive 选项完成。此命令允许你修改一个分支的大小,然后把它们放回原来的分支或者不同的分支。

如最近的三个提交需要修改:

$ git rebase -i master~3

你将到编辑器里编辑一个文件,只要在编辑器里重新排列提交然后退出即可。

变基操作把原始分支历史(带合并)线性化到了 master 分支。如果你想明确保留被变基的整个分支的分支与合并结构,那就使用 –preserve-merges 选项。

原创粉丝点击