使用git,如何在父远程分支重新定位后保存主题分支?

时间:2012-06-21 20:49:03

标签: git git-rebase

我有一个基于git repo远程分支的本地主题分支:

1 - 2 - 4 - 5 - 9 - 11  master
      \
        3 - 6 - 8 - 12  remote branch
              \
                7 - 10  my topic

最近,远程分支机构被大师重新命名:

1 - 2 - 4 - 5 - 9 - 11  master
                       \
            ?            3' - 6' - 8' - 12'  remote branch
              \
                7 - 10  my topic

我想从远程分支的头部重新定义我的主题分支,以便最终将我的更改合并回远程。但是,因为父提交的哈希值发生了变化,所以尝试一个简单的

$ git rebase origin/remote_branch

导致我从未接触过的文件中存在许多冲突。

我可以做些什么来清理这些分支?

1 个答案:

答案 0 :(得分:7)

简单地在origin/remote_branch上重新定位会让git感到困惑,因为它试图在remote_branch的尖端上修改过时的提交,这会导致重复的提交和冲突。

相反,您必须使用--onto选项

关闭和打开与第六个相关的新点提交
git rebase --onto <6'-SHA> <6-SHA> my-topic

<6'-SHA><6-SHA>分别是创建my-topic的提交的新旧ID。