Git:如何忽略/指定*checkout的文件*

iai*_*ain 13 git

如果我不想跟踪.html文件,我可以将模式添加到.gitignore,它们将被忽略.我想知道如何进行反向 - 在结账时,我怎么能让git只检查某些类型的文件或不检查某些类型的文件?

例如,如果我不想要html文件,我可以写:

git checkout HEAD . --no .html
Run Code Online (Sandbox Code Playgroud)

如果存在的话:)是否有内置的方式,或者我只需要在结账后运行其他东西?

任何帮助深表感谢.

Cas*_*bel 16

如果要打包文件以进行部署,您可能不需要 - 或者想要 - repo本身.这正是git archive为了什么.手册页(链接)中的几个示例:

git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)

创建一个tar存档,其中包含当前分支上最新提交的内容,并将其解压缩到/ var/tmp/junk目录中.

git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip > git-1.4.0.tar.gz

为v1.4.0版本创建压缩的tarball.

export-ignore属性的帮助下,您应该能够让它完全按照您的意愿执行:

export-ignore

具有export-ignore属性的文件和目录不会添加到存档文件中.有关详细信息,请参阅gitattributes(5).

例如,要排除的目录private和文件mine.txt,并secret.c,你可以把文件中.gitattributes:

private/     export-ignore
secret.c     export-ignore
Run Code Online (Sandbox Code Playgroud)

就像gitignore文件一样,您可以将它们放在存储库中的任何位置,并且它们将在该目录中运行,但从顶层开始是一个不错的选择.


Sim*_*ast 10

Git的Sparse-Checkout

如果您只想检查存储库的一部分,可以使用git的sparse-checkout选项,该选项具有强大的包含/排除规则.

以下StackOverflow问题有一些有用的说明:
除一个文件夹外的GIT结帐

但作为总结:

  1. 启用sparseCheckout选项:

    git config core.sparseCheckout true
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建名为.git/info/sparse-checkout包含的文件:

    /*
    !node_modules
    
    Run Code Online (Sandbox Code Playgroud)

    这实际上意味着node_modules在将存储库签出到工作目录时包括除目录之外的所有内容.