如果我不想跟踪.html文件,我可以将模式添加到.gitignore中,它们将被忽略。我想知道如何做相反的事情-在签出时,我怎么能要求git只签出某些类型的文件或不签出某些类型的文件?
例如,如果我不想要html文件,我可以这样写:
git checkout HEAD . --no .html
如果它存在的话。有没有一种已经内置的方法,或者我只需要在结账后运行其他东西?
发布于 2011-03-31 03:32:37
如果你想打包要部署的文件,你可能不需要或者不想要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
就像gitignore文件一样,您可以将这些文件放在存储库中的任何位置,它们将从该目录操作,但从顶层开始是一个很好的选择。
发布于 2017-06-28 23:34:58
Git的稀疏-检出
如果你只想签出你的存储库的一部分,你可以使用git的稀疏签出选项,它有强大的包含/排除规则。
以下StackOverflow问题提供了一些有用的说明:
但总而言之:
sparseCheckout
选项:git config core.sparseCheckout true
.git/info/sparse-checkout
的文件,其中包含:/* !node_modules
这实际上意味着在将存储库签出到工作目录时包括除node_modules
目录之外的所有内容。
发布于 2011-08-17 10:19:29
因此,我希望将不带测试文件的代码发送到生产服务器。
对我来说,最简单的方法就是在解压归档文件后使用:rsync --exclude 'tests'
删除所有测试文件。
https://stackoverflow.com/questions/5494576
复制相似问题