2012-01-08 126 views
8

我一直在做一个远程git仓库的本地副本。 我在本地副本上创建了一个分支,我们称之为'my_branch'。 我在my_branch上犯了几次错误。Git重新绑定到master的分支失败,如何解决?

我最近把'my_branch'推到了远程。但是我不知道其他人向远程主服务器添加了一个版本。所以,我将它提交给我的当地主人。

所以...长话短说,我的本地回购看起来像这样(我试图使用diagraming公约here)。

--C0--------------C7-- (local master) 
     \ 
     --C1-C2-C3--  (local my_branch) 
      \ 
       --C4-C5-C6--  (local sandbox_branch) 

我希望它看起来像:

--C0--------------C7-- (local master) 
         \ 
         --C1'-C2'-C3'--  (local my_branch) 
          \ 
           --C4'-C5'-C6'--  (local sandbox_branch) 

我试图变基my_branch ONTO本地主,但我得到这个错误信息(我使用混帐称为GitX的可视化工具):

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. 

我在做什么错?我该如何处理?如果我要在命令行上执行此操作,请在上图中指明我的状态的命令是什么?

更新1

顺便说一句,我不是在应用程序补丁或其它底垫的中间......至少不是故意的。 当我发现远程更新后,我推,我做了一个提取。难道这已经做了什么让GitX认为我正处于应用程序补丁或另一个rebase的中间?

我也更新了图表,以便更准确。 my_branch有一个分支。我没有把它列入原来的问题B/C中,我认为这不重要。我包括万一......

更新2

FYI ...主树“本地”和“远程”看起来像我画的图,但它不”没有sandbox_branch。

+0

你试过'git rebase --abort'吗? – 2012-01-08 18:56:08

+0

“看来我无法创建一个rebase-apply目录,并且 我不知道您是否正在修补程序应用程序或另一个 rebase”< - 是这种情况吗? – fge 2012-01-08 18:56:33

+0

@fge。好问题。我更新了描述。 – milesmeow 2012-01-08 19:13:35

回答

24

git rebase已经找到了.git/rebase-apply目录,因此推测您可能处于rebase中间。如果在以前的重新组合中发生冲突并且未完成重组,则会发生这种情况;即您没有运行git rebase --abort,git rebase --skipgit rebase --continue(解决冲突后的最后一个)之一。

不管怎么说,如果你不认为你跑了git rebase,那么你在这个状态下如何结束并不重要。根据帮助建议,只需rm -fr /my_project_directory/.git/rebase-apply,您现在应该可以进行rebase。

但是等等。既然你说你已经将你的分支发布到远程仓库,你不应该试图将master分配给它。事实上,如果您的远程设置拒绝非快速提交(这似乎是一个通常推荐的最佳做法),那么您甚至无法将重新进行的更改推送到您的远程。一般来说,在将它发布到远程之后尝试修改提交(这是git rebase的做法)是一种不好的做法。

+0

呃哦...那我该怎么办?我对git很陌生。首先'git rebase --abort'?仅供参考......'本地'和'远程'的主树看起来像我绘制的图,但它没有sandbox_branch。 – milesmeow 2012-01-08 20:06:21

+0

我想我可能会将我的更改合并到本地的主服务器上,然后推送到远程服务器...是该走的路吗? – milesmeow 2012-01-08 20:33:38

+0

是否要将这些更改发布到远程主服务器?如果是的话,你应该将分支合并到主机并推送到远程。如果您只想确保来自主服务器的最新更改也是您分支的一部分,请将主服务器合并到您的本地分支中并将其推送到您的远程服务器。 – 2012-01-09 02:30:08

相关问题