0
我有一個很大的git回購,我想將其拆分爲2.我能夠使用「git filter-branch」或「git subtree split」來做到這一點,但兩種方法都是創建全新的提交ID(SHA)。我知道我們正在重寫歷史,它會改變提交id。git拆分回購但具有相同的提交ID
但是我的需求需要在分割回購後有相同的提交id。可能嗎?
例子:
有一個混帳回購富-bar.git下面提交
*foo-bar.git*
1fd3dsg refs #1 change-1 to foo
4sad2as refs #2 change-1 to bar
3edsads refs #3 change-2 to foo
5adsggh refs #4 change-2 to bar
現在我們分開回購富-bar.git到foo.git和bar.git。現在foo.git將獲得所有爲foo和bar.git提交的提交,它將獲得爲bar提交的所有提交,但它們的提交ID已更改。
我得到了什麼:
*foo.git*
s43dfsa refs #1 change-1 to foo
a234s2f refs #3 change-2 to foo
*bar.git*
1s3ds3q refs #2 change-1 to bar
3re2ef2s refs #4 change-2 to bar
我所期待的。
*foo.git*
1fd3dsg refs #1 change-1 to foo
3edsads refs #3 change-2 to foo
*bar.git*
4sad2as refs #2 change-1 to bar
5adsggh refs #4 change-2 to bar
是的,這在數學上是不可能的(好吧,天文不可能,這是相似的),這就是你想要的。 Git是內容尋址存儲系統,這意味着您放入的內容成爲自己的地址。這就是爲什麼你可以信任git中的所有東西,就像它說的那樣。爲了能夠改變ID,除了不可能實現外,還會完全破壞一個令人難以置信的健壯的系統,這是許多(大多數)其他版本的問題,在這些系統中,你可以不依賴內容實際上是它的內容應該是。 –
謝謝@Sven和GrayFixler ..我知道它不可能。但是,爲了解決我們的一個實驗失敗,我們發現這是唯一的方法,所以我想嘗試一下貪婪,如果有機會實現這一點..感謝澄清.. – Sridhar