git rebase一个分支到master失败了,怎么解决?

mil*_*eow 15 git git-rebase

我一直在研究远程git仓库的本地副本.我在我的本地副本上创建了一个分支,我们称之为'my_branch'.我已经在my_branch上做过几次了.

我最近把'my_branch'推到了遥控器上.但是我不知道有人在远程主机上添加了一个版本.所以,我把它拿到了当地的主人那里.

所以...长话短说,我的本地回购看起来像这样(我试图在这里使用图解惯例).

 --C0--------------C7--  (local master)
      \
       --C1-C2-C3--     (local my_branch)
             \
              --C4-C5-C6--     (local sandbox_branch)
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像:

 --C0--------------C7--  (local master)
                      \
                       --C1'-C2'-C3'--     (local my_branch)
                             \
                              --C4'-C5'-C6'--     (local sandbox_branch)
Run Code Online (Sandbox Code Playgroud)

我试图改变my_branch ONTO本地主人但我得到了这个错误消息(我正在使用一个名为GitX的git可视化工具):

Rebase Failed!
There was an error rebasing HEAD with branch 'master'.

command: git rebase refs/heads/master

It seems that I cannot create a rebase-apply directory, and
I wonder if you are in the middle of patch application or another
rebase.  If that is not the case, please
    rm -fr /my_project_directory/.git/rebase-apply
and run me again.  I am stopping in case you still have something
valuable there.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我该怎么处理?如果我在命令行上执行此操作,那么让我进入上图中的状态的命令是什么?

更新1

顺便说一下,我不是在应用程序补丁或其他rebase的中间......至少不是故意的.在我发现遥控器在我推动后更新后,我进行了取景.这有什么可以让GitX认为我正处于应用程序补丁或其他rebase的中间吗?

我还更新了图表以更准确.my_branch有一个分支.我没有将它包含在原始问题中b/c我认为这不重要.我包括以防万一......

更新2

仅供参考......"本地"和"远程"的主树看起来像我绘制的图表,除了它没有sandbox_branch.

Sid*_*ddy 31

git rebase找到了一个.git/rebase-apply目录,因此假设您可能处于rebase的中间.如果在之前的rebase期间发生冲突并且rebase没有完成,就会发生这种情况; 即你没有运行其中一个git rebase --abort,git rebase --skip或者git rebase --continue(解决冲突后的最后一个).

无论如何,如果你认为你根本没有运行git rebase,那么你是如何结束这种状态并不重要的.简单rm -fr /my_project_directory/.git/rebase-apply的帮助提示,你现在应该可以做底垫.

可是等等.既然您说您已将分支发布到远程存储库,则不应尝试将master重新绑定到远程存储库.事实上,如果您的遥控器设置为拒绝非快进提交(这似乎是一般建议的最佳做法),您甚至无法将rebase更改推送到遥控器.通常,在将提交git rebase发布到远程后尝试修改提交(这就是做什么)是一种不好的做法.