Git 如何从特定提交到外部文件夹中签出特定文件夹及其内容?

Git 如何从特定提交到外部文件夹中签出特定文件夹及其内容?,git,git-checkout,Git,Git Checkout,如何从git(1.7.0.4版)存储库中检索完整的子文件夹到本地文件夹,而不首先签出整个repo? 我认为这就是解决办法: git--worktree=/home/tmp/testcheckout-COMMITID--images/* 带有一些目录的回购结构示例: /git/project1/sourcecode /git/project1/images /git/project1/howto /git/project1/readme.txt 因此,示例命令应该签出/git/pro

如何从git(1.7.0.4版)存储库中检索完整的子文件夹到本地文件夹,而不首先签出整个repo? 我认为这就是解决办法:

git--worktree=/home/tmp/testcheckout-COMMITID--images/*

带有一些目录的回购结构示例:

/git/project1/sourcecode  
/git/project1/images  
/git/project1/howto  
/git/project1/readme.txt
因此,示例命令应该签出
/git/project1/images
/home/tmp/testcheckout
下的所有文件,这些文件在提交COMMITID之前已提交到该git repo,但它只签出在该指定COMMITID上已提交的文件,而忽略在此之前已提交的所有其他文件

问题:
使用上面的命令,我只从该子文件夹中获取使用COMMITID提交的文件

问题
我想要的是检索到该委员会之前的所有文件。 有什么解决办法吗


重要信息:我不想克隆整个存储库(700GB),只是为了以后能够检索1GB的文件。因此,必须有一种方法可以直接从repo中获取文件,而无需克隆整个repo。

这里有一个有效的解决方案。该解决方案具有以下功能:
-它不检查整个回购协议,它只检查您需要什么(如果您有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

现在,它只将
图像
文件夹从原始repo复制到此测试repo。然后,您可以根据需要处理数据

这里有一个有效的解决方案。该解决方案具有以下功能:
-它不检查整个回购协议,它只检查您需要什么(如果您有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

现在,它只将
图像
文件夹从原始repo复制到此测试repo。然后,您可以根据需要处理数据

请举例说明您想要检索哪些文件路径,以及当前如何获取这些文件路径,以澄清您的问题?还有,你还在使用这样一个古老版本的Git吗?最新的稳定版本是1.8.4.Hi@Cupcake,我添加了一个示例结构来明确我需要什么,但这澄清了我的要求一个想法是使用git archive如下:git archive-o dump.tgz COMMIT-ID images/*然后将tar提取到工作目录中,但是这个问题才6个月,我的问题已经超过3年了!!你能删除你的评论吗?我将用一个很好的解决方案来更新我的问题。没问题。感谢您的更新。请举例说明您要检索哪些文件路径,以及当前如何未获取这些文件路径,以澄清您的问题?还有,你还在使用这样一个古老版本的Git吗?最新的稳定版本是1.8.4.Hi@Cupcake,我添加了一个示例结构来明确我需要什么,但这澄清了我的要求一个想法是使用git archive如下:git archive-o dump.tgz COMMIT-ID images/*然后将tar提取到工作目录中,但是这个问题才6个月,我的问题已经超过3年了!!你能删除你的评论吗?我将用一个很好的解决方案来更新我的问题。没问题。谢谢你的更新。