如果我不想跟踪.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选项,该选项具有强大的包含/排除规则.
以下StackOverflow问题有一些有用的说明:
除一个文件夹外的GIT结帐
但作为总结:
启用sparseCheckout选项:
git config core.sparseCheckout true
Run Code Online (Sandbox Code Playgroud)创建名为.git/info/sparse-checkout包含的文件:
/*
!node_modules
Run Code Online (Sandbox Code Playgroud)
这实际上意味着node_modules在将存储库签出到工作目录时包括除目录之外的所有内容.