1

我需要修復一個Git存儲庫,它有一個分離的頭和2個連續的分支,與不相關的歷史記錄。我必須在工作中使用SourceTree,但如果需要,我也可以使用命令行。 我必須做的是在不丟失提交之間的情況下,協調當前的[Head](圖像上的3)與[origin/master] [origin/head] [master](2)。我還想合併(或重新連接)2個分支(粉紅色和藍色)。 (我只需要1個分支)。我不確定最好如何處理:調和[Head]和[origin/master]或重新連接2個分支。修復Git與獨立頭和無關歷史的分支

Git Repository Image

我不得不隱藏所有名稱和註釋,因爲這是工作和內容,我允許共享限制。對不起,如果這個問題不符合最好的標準,這是我在任何論壇上的第一個問題。

+0

也許[this](https://stackoverflow.com/questions/5772192/how-can-i-reconcile-detached-head-with-master-origin)將幫你? – ckruczek

+0

謝謝你的快速回答。我只是修復了分離的頭部,就像檢查主分支一樣簡單。現在我所要做的就是將新分支(「初始提交」評論)與實際包含代碼的分支合併。 – Narkael

回答

0

一旦創建於HEAD一個分支標籤,那麼你將是免費籤其他分支,而不會丟失任何您提交的歷史(Ofcourse後,你仍然可以檢索提交的歷史前提是你知道的SHA-ID的,但是這是難以跟蹤的)

所以第一件事首先,建立在您的HEAD是一個本地分支

的Git分支發展

(開發一些分行的名稱,你可以給任何其他名稱,如你所願)

現在,如果你看到你的源代碼樹,你也可以看到HEAD和開發(或者你在上面的git給任何名稱命令)。您現在可以自由結賬master分行。

git的結帳主

一旦你這樣做,你的HEAD現在將在master。請記住:HEAD會告訴您當前代碼位於哪個快照(或哪個提交)中。

接下來,如果你想在master(你剛創建分支)您develop分支的提交以及,所有你需要做的是合併

假設你在主分支(如果你不是,那麼結賬主)

混帳合併開發

(這使開發分公司在本地主提交)

混帳推起源主

(這推動這些變化對遠程/主)

提示:而不是合併,有一個更好的選擇變基可用飯桶。但我認爲你是git的新手,所以最好能通過一些在線材料並研究它來理解合併和rebase之間的區別。 (或者你可以讓你的同事向你解釋)

+0

謝謝你的回答。我只是解決了頭部問題,並意識到這樣做是因爲我認爲自從頭部脫離後已經犯下了錯誤。我現在只需要找到合併當前主分支和另一個分支的方法。問題是他們有不相關的歷史,所以git不會讓我合併它們。 – Narkael

+0

我已經進一步編輯了我的回覆。你可以隨時合併兩個分支(儘管他們有任何歷史)。但是,是的,如果兩個不同分支正在修改相同的文件,則可能需要修復衝突。 – Lokesh

+1

我通過與--allow-unrelated-history選項合併解決了我的問題。我現在有一個主分支,沒有獨立的頭。一切都如我所願!謝謝! – Narkael