2016-05-19 113 views
-1

從存儲庫中檢索單個文件。從存儲庫git-retrieve單個文件

我有10個目錄/ somefiles和pom.xml的存儲庫和一個名稱爲pom.xml(目錄之外)的文件。所以我需要從包含歷史記錄的回購庫中檢索一個pom.xml。這裏有一個問題是pom.xml在所有10個目錄中。當我嘗試使用git filter-branch檢索時--f --prune-empty --index-filter'git rm --cached --ignore-unmatch $(git ls -files | grep -v「pom.xml」)',這個命令檢索包括目錄中的pom.xml在內的所有pom.xml。可以幫助我檢索除目錄中的pom.xml之外的僅pom.xml。

+0

聲音像一個奇怪的用例,爲什麼你不能得到整個存儲器ÿ? –

+0

我可以得到整個repository.But只需要一個pom.xml是在目錄之外。問題是我有其他10個目錄中的所有這些目錄我有pom.xml和其他文件。 –

+0

如果您可以獲取整個存儲庫並且只需要一個文件,那麼通常(通常是正確的)過程就是獲取整個存儲庫,然後僅使用相應的文件。這對於poms尤其重要,依賴關係可能非常複雜:僅僅因爲你認爲你現在只需要一個pom,並不意味着有一天你需要全部十個pom。 –

回答

1
git branch just-pom 
git filter-branch --index-filter ' 
       git read-tree --empty; git reset $GIT_COMMIT path/to/pom.xml 
     ' -- just-pom --full-history -- path/to/pom.xml 

這將保存有關文件的歷史記錄。一切的一切之後,在最後一行的--是參數傳遞給git rev-list,這就是你去選擇到底是哪承諾養活你就構造了歷史。

+0

很棒的jthill。感謝命令,它工作完美。真棒 –

+0

我對你剛纔給出的上述命令有個小問題。這就是爲什麼我們需要給--just-pom中的' - 只是pom --full-history - path/to/pom.xml'它的分支名稱@jthill –

+0

這限制了過濾器分支將重寫的內容。 – jthill

相關問題