2013-08-07 69 views
1

如何從git(版本1.7.0.4)存儲庫檢索完整的子文件夾到本地文件夾,而無需首先檢出整個回購? 我認爲這將是解決辦法:如何檢出特定文件夾及其內容從特定提交到外部文件夾?

git --work-tree=/home/tmp/testcheckout checkout COMMITID -- images/*

例回購結構,一些目錄:

/git/project1/sourcecode 
/git/project1/images 
/git/project1/howto 
/git/project1/readme.txt 

因此,例如命令應/git/project1/images下的所有文件籤至/home/tmp/testcheckout已承諾該git回購提交COMMITID但它只檢出已在該給定的COMMITID提交的文件,忽略之前提交的所有其他文件。

問題:
有了上面的命令我只能從已提交與該的commitid子文件夾中的文件。

問題
我想要的是檢索所有文件,直到該COMMITID。 任何解決方案?

重要:我不想克隆整個存儲庫(700GB),以便能夠稍後檢索1GB的文件。因此,必須有一種方法可以直接從回購站點獲取文件,而無需克隆整個回購站點。

+0

您能否通過舉例說明您想要檢索的文件路徑以及您目前沒有找到它們的方式來澄清您的問題?另外,你還在使用如此古老的Git版本?最新的穩定版本是1.8.4。 – 2013-08-07 14:25:17

+0

嗨@Cupcake,我添加了一個示例結構,以清楚我需要什麼,但是這澄清了我的要求 – basZero

+0

一個想法是使用git-archive,如下所示:git archive -o dump.tgz COMMIT-ID images/*然後用tar提取進入工作目錄。 –

回答

1

這是一個工作解決方案。該解決方案具有以下功能:
- 它不檢查整個回購,它只是檢查你需要什麼(如果你有100GB以上的回購,這將非常方便) - 你創建一個新的回購作爲目標,所以沒有什麼可以改變你的原始回購,好眼光?

解決方案

git init /example/gittest 
cd /example/gittest 
git remote add -f origin /PATH/TO/SOURCE/REPO/.git 
git config core.sparsecheckout true 
echo images >> .git/info/sparse-checkout 
git pull origin master 

現在只複製從原始回購該測試回購的images文件夾。然後你可以使用你想要的數據。

相關問題