我試圖從一個倉庫移到一個單獨的文件(稱爲foo.txt的)到另一個(無關)資料庫,保留它的歷史。 ebneter's question顯示瞭如何爲子目錄執行此操作。 taw's question有一些提示和建議,但不是一步一步的過程。 jkeating's question看起來很有希望,但沒有爲我工作。谷歌搜索在這個特定用例中空了。我正在尋找的是一個明確的命令序列來完成這一點。如何將文件從一個git倉庫轉移到另一個,同時保留歷史
命令我開始跟着順序是這樣的:
$ git clone source-repo/ source-repo-copy
$ cd source-repo-copy
$ git filter-branch --tree-filter 'test ! "[email protected]" = "foo.txt" && \
git rm --cached --ignore-unmatch [email protected] || true' --prune-empty
我的過濾器命令的邏輯是git rm
未foo.txt的所有文件。我在命令中添加了|| true
以強制它具有零返回值以滿足過濾器分支。
我的目的是設定源回購副本作爲我的目標倉庫(目標回購)的遠程,並假設git filter-branch
過濾掉一切,但foo.txt的,取與合併來源回購複製到目標回購。不幸的是,git filter-branch
命令似乎沒有效果。它跑了沒有錯誤,似乎研磨通過600多個源回購承諾,但是當它完成後,git log
和文件源回購副本看起來都一樣。不應該所有的文件,但foo.txt丟失,並沒有觸及它的所有提交從日誌中消失?
在這一點上,我不知道如何着手。有什麼建議麼?
可能的重複[如何將文件從一個git回購到另一個(而不是克隆),保留歷史](http://stackoverflow.com/questions/1365541/how-to-move-files-from-one -git-repo-to-another-not-a-clone-preserving-history) – tripleee