借用一些教程,我可以在git仓库中对特定文件夹进行稀疏检查。
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
答案 0 :(得分:4)
您可以使用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
子目录中,所以最好习惯使用它们到存储库布局......
答案 1 :(得分:3)
根据您要完成的任务,您有两种选择。如果您希望能够跟踪文件的更改,那么我将提交符号链接。如果您不关心本地更改,那么我会使用git archive
。
您可以将符号链接提交给您关心的文件,也可以使用备用结帐来获取这些文件。
ln -s contrib/completion/git-completion.bash git-completion.bash
git add git-completion.bash
这将允许您编辑文件并提交对它们的更改。
这将简单地提取您要查找的内容。将不会在存储库中跟踪更改。
# 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 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 -
现在您将拥有当前目录中的文件。