从几个教程中借用,我能够对Git Repo中的特定文件夹进行稀疏结帐。

mkdir git-completion && cd git-completion
git init
git remote add –f origin https://github.com/git/git.git
git config core.sparsecheckout true
echo contrib/completion/ >> .git/info/sparse-checkout
git pull origin master

例如,假设我正在追随 git-completion.bash, git-completion.tcsh, ,等等的脚本 contrib/completion 此存储库的文件夹。

上面的稀疏结帐确实返回了我所需的文件夹,但是它似乎具有嵌套的文件结构:

git-completion/contrib/completion/git-completion.bash

是否可以这样将文件拉到父目录中?

git-completion/git-completion.bash
有帮助吗?

解决方案

你可以做到这一点 git show:

git show <revision>:path/to/file.txt > different/path/to/otherfile.txt

在您的具体情况下:

git show HEAD:git-completion/contrib/completion/git-completion.bash > git-completion/git-completion.bash

重复要结帐的每个文件。尽管实际上,我认为分支机构的原因是,当这些导演捆绑成一个 git 释放,他们放在 contrib/completion 子目录,因此最好适应存储库布局...

其他提示

根据您试图完成的工作,您有两个选择。如果您想能够跟踪对文件的更改,那么我将提交符号链接。如果您不关心本地变化,那么我会使用 git archive.

提交符号链接

您可以对所关心的文件进行符合链接,并使用备用结帐来获取这些文件。

ln -s contrib/completion/git-completion.bash git-completion.bash
git add git-completion.bash

这将使您能够编辑文件并将其提交给它们。

git档案

这只会提取您要寻找的内容。更改将不会在存储库中跟踪。

# generic
git archive <revision>:<path> | tar -xf -

#specific to your example
git clone --bare https://github.com/git/git.git ~/git-completion-bare
mkdir git-completion && cd git-completion
git archive --remote ~/git-completion-bare master:contrib/completion/ | tar -xf -

编辑:看起来像 github 不支持 git archive --remote. 。它仍然在下面包括,以防有人使用允许它的其他托管服务。

git档案与示例

使用Git Archive,您甚至可以直接从远程存储库下载更改,而无需首先克隆存储库。缺点是您无法通过GIT跟踪本地更改。

# General form
git archive --remote <url> <revision>:<path> | tar -xf -
# your example 
git archive --remote https://github.com/git/git.git master:contrib/completion/ | tar -xf -

现在,您将在当前目录中拥有文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top