一个分支的交互式变基,其与主人的分歧点

时间:2012-05-02 14:30:12

标签: git rebase

假设我有一个主题分支,我想重写整个历史记录,因为它最初是从master为pull请求创建的。无论出于何种原因,使用git log来确定我想要传递给的提交哈希是不容易或不明显的

git rebase -i <commit>

我知道我可以使用git merge-base <branch1> <branch2 || master>来查找两个引用可以跟踪其祖先的提交,并可以使用它来确定提交。我想知道的是,如果有一种更好的方式来交互式地改变整个分支(无论主人是否提高)而不是使用

git rebase -i `git merge-base my_branch master`

编辑:我不想更改在此分支上进行的第一次提交的父级,因此git rebase -i master仅适用于自创建分支并且分支是从提交主机当前指向。

2 个答案:

答案 0 :(得分:19)

也许我误解了你的问题,但我认为git rebase -i master应该做你想做的事。它将找出合并基础并将整个分支从该点重新绑定到当前的HEAD,以便它看起来已经从当前的主要提示分支。

另外,如果master没有进阶,那么rebase几乎就是无操作。

答案 1 :(得分:0)

我只对您列出的命令进行了一次迭代改进。您的命令:

git rebase -i `git merge-base my_branch master`

一种改进是不必记住要重新设置基准的分支的名称。假设您当前位于要重新设置基准的分支上(根据我的经验,这几乎总是这种情况),可以使用:

git rebase -i `git merge-base HEAD master`