2017-03-24 142 views
0

我只想在一個文件而不是目錄上執行與git-subtree split等效的操作。也就是說,我想創建一個僅具有一個文件及其所有歷史記錄的新存儲庫。將文件拆分到單獨的存儲庫中,保留歷史記錄

傳遞文件名到--prefix參數不起作用

git subtree split --prefix=file_name -b split 

我試過幾個變化上git-filter-branch但沒有找到正確的咒語。

+0

的文件tree-filter刪去[見這相關(但不完全一樣)的問題(http://stackoverflow.com/q /1256452分之42661978)。爲了實現你想要的,你必須複製你想要複製的提交,而不是其他任何提交。你可以用'git filter-branch'來做這件事,它只是緩慢而痛苦的。你可以通過其他方式加快速度;直到你編寫像'git subtree'這樣的腳本,它仍然會很痛苦。 – torek

+0

這是一個適用於一個或多個文件的解決方案:https://stackoverflow.com/a/6006679/1072626 – vossad01

回答

1

你可以使用filter-branch與除要保持像

git filter-branch --tree-filter 'find -type f -not -path ./foo/bar -delete' --prune-empty 
+0

請注意,在文件路徑的開頭加入'。/'是至關重要的。 – vossad01

+0

然後我使用[this filter-branch](http://stackoverflow.com/a/6149972/1072626)來刪除根提交。在我的情況下,我想要的文件不在根提交中,但提交被保存爲空提交。 – vossad01

相關問題