2012-03-05 62 views
1

這是一個複雜的情況,但基本上這裏發生的是我們的分支已經與主人分離了。所以基本上:如何重新連接與主人分離的Git分支? (並複製父母?)

A - B - C   master 
    \ 
     X - Y - Z feature 

已變成:

A - B - C   master 

(A) - (B) - X - Y - Z feature 

的SHA值是用於A /(A)和B /(B)是相同的。這正是它在GitK中的表現。在這一點上,我只是試圖基本上將它恢復到與以前相同的順序。不幸的是,由於SHA似乎是相同的,我不知道如何操作X來分支出B而不是(B)。我真的不知道從哪裏開始嘗試這種恢復。如何在提交B時重新連接兩個分支?

請注意,我已經看到this question,但它似乎是一個稍微不同的問題,因爲B和(B)的sha-1是相同的,因爲它沒有被改變。

+0

什麼'git merge-base 'return? – tjdett 2012-03-05 04:45:12

+1

出於好奇,你知道這究竟是怎麼發生的嗎? – 2012-03-05 05:09:35

+1

如果(B)和B的sha-1相同,那麼這是不是表示它實際上是連接的? – bdonlan 2012-03-05 05:12:14

回答

5

如果您確定A /(A)和B /(B)是相同的SHA散列,那麼我不會看到問題是什麼,因爲X的父代是B ===(B)根據你的圖。

這是全部在本地存儲庫嗎?是否有任何遠程裸倉庫參與?

嘗試從運行以下以顯示圖形,並把它放在你的問題:

git log --graph --oneline --all 

我複製你的設置簡單的推動,並承諾和該命令給出了(從功能分支):

* 86bf1b1 added Y on feature 
* a690031 added X on feature 
| * a7347fe added C on master 
|/ 
* d02c518 added B 
* 7d81e39 added A 

如果SHA提交符合您的建議,您應該看到相同的行爲。如果不是,請在您遇到的有問題的隔離區域發佈更新。

+0

一致認爲,如果sha1相同,則意味着它們是相同的,唯一的選擇是我認爲遠程跟蹤可能會被破壞,並且(A)和(B)自此以後沒有提交過,但在本地分支出去。 – 2012-03-05 11:43:08

+0

使用git log --graph --oneline --all DOES似乎顯示正確的樹。我不確定爲什麼我認爲它昨天不同。也許有一個合併,導致樹木加入,這是重新啓動。感謝您的幫助。 – 2012-03-05 13:06:48