假设我有一个主题分支,我想重写整个历史记录,因为它最初是从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
仅适用于自创建分支并且分支是从提交主机当前指向。
答案 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`