2012-01-08 100 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

相關問題