稀疏Git签出文件到父目录

时间:2013-11-07 14:53:11

标签: git sparse-checkout

借用一些教程,我可以在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.tcshcontrib/completion等脚本之后。

上面的稀疏结账确实会返回我想要的文件夹,但它似乎有一个嵌套文件结构:

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

是否可以将文件拉入父目录,如此?

git-completion/git-completion.bash

2 个答案:

答案 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

这将允许您编辑文件并提交对它们的更改。

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。如果有人使用允许的不同托管服务,它仍然包含在下面。

使用--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 -

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

相关问题