Git pull忽略图像文件

时间:2014-12-11 05:50:11

标签: git

我是存储库中的贡献者,偶尔会向其发布图片。图像确实不是必需的,但其他贡献者将继续addpush到存储库。我想执行忽略图像文件后缀的pull操作,例如*.png。 git目录只占用太多空间,我真的不需要拉这些图像文件。

我怎样才能pull图像文件,但所有其他?

1 个答案:

答案 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-checkoutgit config core.sparsecheckout true
  • sparse-checkout下定义.git/info/文件,其中包含您要包含
  • 的文件模式
  • 更新您的工作树git read-tree -m -u HEAD

您可以在git read-tree的官方文档中了解sparse-checkout的更多信息。