我的需求:將一個git倉庫分解爲多個git倉庫,保留與原始倉庫相同的目錄結構,並保存提交歷史記錄被複制到新回購的文件。 我曾嘗試已經:將多個文件和目錄從一個git倉庫複製到另一個倉庫,同時保留其原始歷史
首先我想基於在http://gbayer.com/development/moving-files-from-one-git-repository-to-another-preserving-history/ 結果的建議git的過濾分支--subdirectory過濾:歷史保留,但可運行 只觀察git log - follow 此外,原始的提交歷史記錄無法在Github上看到。它只顯示我的合併提交作爲該文件的唯一提交,並且不顯示任何以前的提交。我仍然可以忍受這種限制,並接受它作爲解決方案。但我對這種方法的另一個擔憂是,對於每個文件夾和我想要複製的每個文件,我需要多次克隆原始回購,並且每次都重複所有12或13個步驟。我想知道是否有更簡單的方法,因爲我正在移動大量文件。此外,由於該帖子已有5年曆史,只是想知道是否有更新的更簡單的解決方案? (令人驚訝的谷歌主要是顯示了這個博客作爲第一搜索結果)
我想是在較早的格雷格·拜爾的信息發表評論http://gbayer.com/development/moving-files-from-one-git-repository-to-another-preserving-history/#comment-2685894846 該解決方案通過使用git的子樹做的事情簡單一點接下來的事情分裂但結果與第一種情況相同。
然後我嘗試了git的日誌--patch-與-STAT和git的是在此基礎上回答https://stackoverflow.com/a/11426261/5497551 結果選項:這通常給出了遇到的合併錯誤,而應用補丁。 我嘗試了使用這個答案的建議之一-m --first-parent這解決了錯誤,但沒有將任何合併擴展到它們的提交中,只是將合併列爲單個提交。因此,大部分提交歷史都會丟失。 所以我增加了另一個選項--3way。這一直反覆通過承諾,並沒有導致任何可接受的解決方案。
總之,我寧願使用第三種解決方案,如果只有一個選項可以將合併中的所有提交列入新回購的歷史記錄中。否則,我必須堅持第一個解決方案,這在我的情況下有點不方便和乏味。任何建議,幫助將不勝感激。
謝謝。
'還保存提交歷史所有files' - 所以只是刪除你不希望保留的位?您可能會發現這很有用:[帶有僅當前跟蹤文件的歷史記錄複製的新回購](http://stackoverflow.com/a/17909526/761202)。 – AD7six
謝謝。當你說'刪除所有內容並恢復你想保留的文件:'你能幫我理解我們要恢復哪些文件嗎?因爲keep-these.txt將包含當前回購權限中存在的所有文件的列表?或者我應該先刪除不需要的文件,然後執行'git ls-files> keep-these.txt'?我對git很新,所以對它的所有概念都不太熟悉。 – neel
請編輯您的問題以便清楚。從問題描述中不清楚爲什麼'git rm somefolder; git commit -m「刪除一些文件夾」不會做你想做的事 - 你特別要求保留_all_文件的提交歷史;也要具體說明你擁有什麼,以及你期望的結果;將頂級文件夾/文件放在問題中 - 以及您想實現的目標。 – AD7six