目的是克隆https://github.com/opower/sensu-metrics-relay/tree/master/lib/sensu/extensions而不是整个目录。
git clone https://github.com/opower/sensu-metrics-relay/tree/master/lib/sensu/extensions
结果是:
Cloning into 'extensions'...
fatal: repository 'https://github.com/opower/sensu-metrics-relay.git/lib/' not found
答案1
不,不是的。
为了减少下载大小,您可以截断历史而是使用--depth=1
。
答案2
现代的git
“子树”功能可以实现这一点。
它将创建一个新的分支,重新创建所有提交(因此有新的 ID),以便从存储库中过滤掉仅一个目录。
然后,您可以将存储库添加为远程存储库,并仅使用该分支。
您可以在以下位置找到详细说明https://medium.com/@porteneuve/mastering-git-subtrees-943d29a798ec但请注意,自从写下这些内容以来,git 中的内容已经发生了变化,现在子树是一个核心功能。
该功能的完整 git 文档位于https://git.kernel.org/pub/scm/git/git.git/plain/contrib/subtree/git-subtree.txt
第三个例子几乎正是您所需要的:
EXAMPLE 3. Extract a subtree using branch
-----------------------------------------
Suppose you have a source directory with many files and
subdirectories, and you want to extract the lib directory to its own
git project. Here's a short way to do it:
First, make the new repository wherever you want:
$ <go to the new location>
$ git init --bare
Back in your original directory:
$ git subtree split --prefix=lib --annotate="(split)" -b split
Then push the new branch onto the new empty repository:
$ git push <new-repo> split:master
但请注意,无论你做什么,你的问题在 git“意识形态”中都很奇怪,所以它有点像 XY 问题。你应该分享更多细节,说明你为什么认为你需要这样做,因为无论如何,你可能走错了路。