使用 git 从 github 克隆子目录

问题描述 投票:0回答:1

在 git 中,我想从 Github 存储库下载一个文件夹并将其添加到我的存储库中的子目录中,如下所示:

存储库/文件夹/子文件夹/

repo/folder/subfolder/clonedfolder //从 git hub 克隆的文件夹

但是我也得到了我不想要的路径目录。

存储库/文件夹/子文件夹/文件夹/文件夹1/文件夹2/克隆文件夹

这是我尝试过的

repo/folder/subfolder$ git init

repo/folder/subfolder$ git remote add -f origin [email protected]:repo/repo.git

repo/folder/subfolder$ git sparse-checkout init

repo/folder/subfolder$ git sparse-checkout set clonedfolder

repo/folder/subfolder$ git sparse-checkout list
- clonedfolder

repo/folder/subfolder$ git pull origin develop

这在 git 中可能吗?

git github subdirectory git-clone git-sparse-checkout
1个回答
0
投票

Git 不适合这个。原因是,每当您从存储库中获取数据时,您的

.git/objects
文件夹都会包含对存储库中所有文件的所有更改。*

如果您有选择,我会将关注点分成 Git 子模块,它们或多或少是使用父项目(带有

.gitmodules
文件)链接在一起的独立 git 存储库。

然后你就可以使用符号链接来制作你想要的目录结构。

例如:

mkdir parent-proj ; cd parent-project
git init
mkdir .my-git-root-folders
git submodule add https://example.com/child.git .my-git-root-folders/child
ln -s .my-git-root-folders/child/path/to/subfolder childmodule
git add childmodule
git commit -m 'Add and link child module'

此后您可以访问

childmodule/some-file
,就像访问
<child repo>/path/to/subfolder/some-file
一样。☥

Git 将跟踪符号链接。‡

脚注:

  • * 浅克隆的情况除外,浅克隆仅包括每个可到达的 HEAD 的最新修订。
  • 如果您的代码没有专门测试符号链接。
  • Windows 已知存在符号链接问题;您甚至需要管理员访问权限才能创建它们。
© www.soinside.com 2019 - 2024. All rights reserved.