我有一个包含子目录的git仓库。例如 dirA/dirB。在Unix服务器上,有没有办法执行git clone
只拉取子目录(dirB)中的文件?
除了clone之外,是否还有其他的git命令可以实现这一点?
如何从git中获取特定文件?
我有一个包含子目录的git仓库。例如 dirA/dirB。在Unix服务器上,有没有办法执行git clone
只拉取子目录(dirB)中的文件?
除了clone之外,是否还有其他的git命令可以实现这一点?
如何从git中获取特定文件?
假设您的项目在名为project
的目录中,并且您仅想获取那些涉及project/dirB
的提交记录。
那么,请执行以下操作:
git clone project/ subproject/
cd subproject
git filter-branch --prune-empty --subdirectory-filter dirB HEAD
subproject
现在将包含涉及dirB
的Git历史记录。
pull
时,它与原始分支合并了... - monkut--depth 0
标志。 - user742030Cf https://www.kernel.org/pub/software/scm/git/docs/git-archive.html
使用一个shell命令:
git archive --remote=<repo_url> <branch> <path> | tar xvf -
这并不是真正的克隆,如果你只想要项目中的一部分来创建一个新的仓库,请进入你的仓库并
git archive master <subdir> | tar -x -C /somewhere/else
mkdir <repo_dir>
cd <repo_dir>
git clone <repo_url>
ln -s <sub_dir> <your_location_where_you_want_to_checkout_sub_dir>
再次声明,这不是一种解决方案 - 只是一个解决方法。您仍将克隆整个存储库,但只能从中拉取更改。然而,在我的某些情况下,这非常有用。
Git 是基于仓库级别的操作。你无法只选择子目录。如果你感兴趣的仓库有一个 Web 接口,你可以尝试导航到你的子目录并获取它。