2016-12-16 111 views
0

我們是非常沒有受過教育的git用戶,通常使用單個主分支通過GitHub同步許多文件併合並,因爲我們在執行過程中幾乎沒有重疊。Git Auto Rebase問題

在極少數情況下,我們會得到一個隨機出現的rebase分支,這個分支將不知從哪裏冒出來。這最近發生了。

我們試圖通過執行git rebase --continue而沒有衝突將其與我們的主分支合併。然後執行一個git checkout master,我們想用git merge RANDOM REBASE來追蹤它,但是這一切似乎都消失了,我們已經失去了關於那個奇怪的隨機rebase分支的重要承諾數據。

我們該如何恢復?

+1

什麼是「rebase分支」? –

+0

什麼是「隨機數據庫」分支,爲什麼你想用'master'將數據集合起來?通常情況下,您將通過'master'重新綁定一個特性,以便通過在其上面提交提交來快速轉發後者。 –

+0

當使用github for windows時,它顯示爲另一個名稱類似於(fj%74(REBASE) –

回答

1

當你使用Github for Windows應用程序時,我試圖用對於不習慣使用git命令的人來說應該很容易理解的術語來寫這個答案。

在Github for Windows中,Sync按鈕實際上執行了許多git命令,如eg. in here所述。如果同步按鈕是你一直在使用所有,以下情形可能會導致進入新的分支機構和怪異的合併提交:

  • 人A已編輯的文件XYZ
  • 某甲犯&同步XYZ到主
  • 某乙在編輯文件XYZ沒有先同步(即B爲編輯舊版本的XYZ)
  • 人B提交&嘗試XYZ
  • Github上同步爲Windows嘗試自動處理這種情況
  • 這可能導致從A和B的共同起始點創建新分支,B在這個新分支上提交併且A在主分支上提交
  • 然後這個新分支將自動重新分配或合併(取決於衝突&等)主人

不幸的是,Github for Windows偶爾會弄壞rebase。然後你會在GUI中看到一條錯誤消息,並需要弄清楚Git shell中的情況。如果是這種情況,通常我發現唯一的解決方法選項是使用git rebase --abort中止rebase,從GUI中撤銷B的提交(如果可能),並將B的工作空間恢復到包含A的提交的主分支。然後B可以在包含A的更改的文件上重新應用她的更改。

Github for Windows的Simple Person's Workflow通常應該是「同步,更改,提交,同步」,以便在編輯任何內容之前獲得所有先前的更改。在shell中使用實際的git命令仍然是首選。

2

當使用github上窗戶它顯示爲與像(FJ%74(REBASE)

一個名稱的另一個分支如圖this question

C:\Users\w\Documents\GitHub\CmisSync [(6026d18...)|REBASE +0 ~1 -0 !1 | +0 ~0 -0 !1]> git status 
# Not currently on any branch. 
# You are currently rebasing. 

它不是一個分支,但一個git bash提示說明如下:

  • rebase正在進行中
  • 您需要繼續並完成變基(或取消)

如前所述in the answer

,如果你真的不知道你衍合,最好期間做了什麼以開始就是以git rebase --abort

還是看「Undoing a git rebase」:git refloggit reset --hard ORIG_HEAD之間,你可以回去到已知狀態衍合前。

0

如果你真的想合併分支機構,你應該做git merge <branch name>。命令git rebase --continue確實不是執行合併。相反,它繼續已經開始的與合併非常不同的重組操作。另外,如果您正在執行此命令,則表示您以前必須完成git rebase <branch name>。分支機構不會從任何地方出現。它們是在執行命令時創建的,通常是git branchgit checkout -b。如果您確實需要使用git rebase,則應該詳細瞭解它的工作原理。 Git Pro是一本關於Branches and Rebasing的好書的免費在線書籍。