这是不可能的。你需要调出所有的存储库。
有时,您只是想查看一下以前的文件副本,而不需要进行繁琐的差异处理。
在这种情况下,克隆存储库并签出感兴趣的特定提交并查看克隆存储库中的子目录也很容易。因为一切都是本地的,你可以删除这个克隆当你完成。
git fetch
git checkout HEAD path/to/your/dir/or/file
(3)中的“path/...”开始于包含“.../file”的repo根下面的目录
path/...
.../file
注意,可以使用特定提交的哈希码而不是“HEAD”,然后您将获得特定于该提交的revision (file)或revisions (dir)。
也许这个命令会有帮助:
git archive --remote=MyRemoteGitRepo --format=tar BranchName_or_commit path/to/your/dir/or/file > files.tar
“果不其然”
在空目录中:
git init git remote add [REMOTE_NAME] [GIT_URL] git fetch REMOTE_NAME git checkout REMOTE_NAME/BRANCH -- path/to/directory
大多数答案/技术都会下载整个存储库,即使你只会看到/使用其中的一个子集。我不喜欢这样,因为我做的一些事情有很多我不感兴趣的大文件。在寻找答案,没有找到,放弃,再次尝试等等之后,我终于在另一个so线程中找到了一个解决方案:
How to git-pull all but one folder .
复制粘贴这里的内容:
git init git remote add -f origin <url> git config core.sparsecheckout true echo <dir1>/ >> .git/info/sparse-checkout echo <dir2>/ >> .git/info/sparse-checkout echo <dir3>/ >> .git/info/sparse-checkout git pull origin master
要做OP想要做的事情(只处理一个目录),在执行上述步骤时,只需将该目录添加到.git/info/sparse-checkout。这个解决方案只会下载你想要的东西,仅此而已。
.git/info/sparse-checkout
非常感谢@cforbish !
git clone --filter从git 2.19现在工作在GitHub(测试2020-09-18,git 2.25.1)
git clone --filter
我不确定拉/取,但至少对于最初的克隆,这个选项与远程协议的更新一起添加,它真正阻止了从服务器下载对象。
例如,只克隆这个存储库的d1所需的对象:
d1
git clone \ --depth 1 \ --filter=blob:none \ --no-checkout \ https://github.com/cirosantilli/test-git-partial-clone \ ; cd test-git-partial-clone git checkout master -- d1
我已经在Git:如何克隆Git存储库的子目录?中详细介绍了这一点
很可能在这个领域中为git clone实现的任何东西也会有git pull类似物,但我还不能很容易地找到它。
git clone
git pull
如果你想在不进入目录的情况下获得目录的最新更改,你可以这样做:
$ git -C <Path to directory> pull
经过试验和测试,这是可行的!
mkdir <directory name> ; //Same directory name as the one you want to pull cd <directory name>; git remote add origin <GIT_URL>; git checkout -b '<branch name>'; git config core.sparsecheckout true; echo <directory name>/ >> .git/info/sparse-checkout; git pull origin <pull branch name>
希望这对你有帮助!
https://github.com/microsoftarchive/msdn-code-gallery-community-s-z
我只对路径中的Microsoft Dynamics js文件感兴趣
msdn-code-gallery-community-s-z/Sdk.Soap.js/
所以我做了以下的事情
创建一个
msdn-code-gallery-community-s-zSdkSoapjs\.git\info\sparse-checkout
文件在我的存储库文件夹在磁盘上
git sparse-checkout init
在Windows下使用CMD在该目录中
的文件内容
是
Sdk.Soap.js/*
最后做一个
git pull origin master