假设我有一个主题分支,我想重写它的整个历史,因为它最初是从master为pull请求创建的.无论出于何种原因,使用git log
确定我想传递给的提交哈希并不容易或明显
git rebase -i <commit>
Run Code Online (Sandbox Code Playgroud)
我知道我可以git merge-base <branch1> <branch2 || master>
用来查找两个引用可以跟踪其祖先的提交,并可以使用它来确定提交.我想知道的是,如果有一种更好的方式来交互式地改变整个分支(无论主人是否提高)而不是使用
git rebase -i `git merge-base my_branch master`
Run Code Online (Sandbox Code Playgroud)
编辑:我不想更改在此分支上进行的第一次提交的父级,因此git rebase -i master
只有在创建分支并且从当前指向的提交主机创建分支时,两个主服务器都没有高级的情况下才会工作.
twa*_*erg 20
也许我误解了你的问题,但我认为git rebase -i master
应该做你想做的事.它将找出合并基础并将整个分支从该点重新绑定到当前HEAD,以便它看起来已经从当前的主数据分支.
此外,如果主人没有进步,那么重新定位几乎就是无操作.
我只发现对您列出的命令的一项迭代改进。您的命令:
git rebase -i `git merge-base my_branch master`
Run Code Online (Sandbox Code Playgroud)
一个改进是不必记住要变基的分支的名称。假设您当前位于要变基的分支上(根据我的经验,这几乎总是这种情况),您可以使用:
git rebase -i `git merge-base HEAD master`
Run Code Online (Sandbox Code Playgroud)