2016-06-28 26 views
0

因此,我搜索了一下,發現了一些我應該工作但仍然沒有的東西(這可能是我在做有些不對勁)如何在沒有共同祖先的情況下將提交從一個git repo移動到另一個

這裏是爲了

1)我們有一個SVN倉庫

2)我轉換SVN回購協議的Git的故事,但沒有使用--stdlayout參數(錯誤被製作出來),所以並沒有得到所有分支的良好歷史記錄,並且它只是有一個大的分支文件夾。所有的提交都在那裏,但分支和合並的歷史沒有跟隨。我們把trunk文件夾的內容(最近的代碼),移動到repo的根目錄,並刪除了其他所有內容。如果需要,我們可以回頭查看其他內容,但看不到合適的分支歷史記錄。

3)我們做了噸的新的Git回購

4)我們決定,我們希望能夠標註一個文件恢復到它的開始是不是我們可以在做更改代碼(枝)這一點

5)我採取了SVN回購協議,並將其重新轉換爲Git,並且此次使用了--stdlayout命令,因此我們獲得了適當的歷史記錄。

所以現在的挑戰是從我們最初轉換到新的回購以來,我們完成了所有提交。所以一個回購在那段時間之前就有過垃圾歷史,在那段時間之後我們所有的新變化,另一個回購在那個時間之前有很好的歷史,但是從此以後就沒有了。

到目前爲止,我已經新鮮克隆第二回購,並添加了所有更改作爲遠程舊回購。我試圖重建,創建和應用修補程序,執行一個gaft,並使用git-reset。我的所有嘗試都沒有成功,但我可能做錯了一些事情。

在初始移動之前和之後仍然保持分支和合並歷史的同時,實現此目的的最簡單方法是什麼?

非常感謝你們的幫助,對於我缺乏知識感到抱歉。這應該從來沒有成爲一個問題。

不知道這是否有幫助,但這裏是我的樹中原始轉換(藍色)發生的位置以及它與新回購(粉紅色)對齊的位置。我基本上只想在初始轉換後將第一次提交的父代更改爲第二次轉換的最後一次提交(請參見圖片)。 Visual Tree

回答

0

您可以從舊的存儲庫中的差異/補丁文件和應用相同的DIFF到新存儲庫

+0

謝謝。我能夠使用「git format-patch」和「git am」成功獲得我們使用的每個分支的提交,但沒有分支和合並記錄。它會工作,但並不理想。 – Alex

相關問題