我是存储库中的贡献者,偶尔会向其发布图片。图像确实不是必需的,但其他贡献者将继续add
和push
到存储库。我想执行忽略图像文件后缀的pull
操作,例如*.png
。 git目录只占用太多空间,我真的不需要拉这些图像文件。
我怎样才能pull
图像文件,但所有其他?
答案 0 :(得分:7)
您可以使用sparse-checkout
来稀疏地填充您的工作目录。 sparse-checkout
使用了skip-worktree
位,这使得git认为工作树中的文件无论如何都是最新的。
对于以下内容,我假设您当前位于存储库的根目录中,并且有一个干净的工作树(git stash
例如。)。
首先,您必须使用sparse-checkout
启用git config core.sparsecheckout true
;在此之后,您可以在.git/info/sparse-checkout
的结帐时定义您想要“忽略”的所有模式
语法与.gitignore
文件中的语法相同,不同之处在于您定义了要结帐的所有文件,而不是您要忽略的文件。
假设您要避免检出存储库中的所有png
文件,那么您的sparse-checkout
文件可能如下所示:
* # Include everything
!*.png # Flag png files with the 'skip-worktree' bit
如果要将sparse-checkout
应用于当前工作目录,则必须在之后执行read-tree
命令。
git read-tree -m -u HEAD
之后,您可以像往常一样继续使用存储库,而不会在工作树中使用“忽略”文件。
<强> TL; DR:强>
sparse-checkout
:git config core.sparsecheckout true
sparse-checkout
下定义.git/info/
文件,其中包含您要包含 git read-tree -m -u HEAD
您可以在git read-tree
的官方文档中了解sparse-checkout
的更多信息。