2

如何在不首先检查整个存储库的情况下从 git(版本 1.7.0.4)存储库中检索完整的子文件夹到本地文件夹?我认为这将是解决方案:

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

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

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

因此,示例命令应该检查所有已提交/git/project1/images/home/tmp/testcheckout该 git repo 的文件以提交 COMMITID,但它只检查已在该给定 COMMITID 提交的文件,而忽略在此之前已提交的所有其他文件。

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

问题
我想要的是检索直到该 COMMITID 的所有文件。有什么解决办法吗?

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

4

1 回答 1

1

这是一个可行的解决方案。该解决方案具有以下功能:
- 它不会检查整个 repo,它只是检查您需要的东西(如果您有 100GB 或更多的 repo,这会非常方便) - 您创建一个新的 repo 作为目标,所以什么都没有更改了您的原始存储库,很好吗?

解决方案

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原始存储库中的文件夹复制到此测试存储库。然后你可以对数据做你想要的。

于 2017-07-21T11:59:19.383 回答