繁体   English   中英

Git-根据文件内容忽略文件

[英]Git - Ignore a File Based on its Content

我们的构建过程会自动生成许多不遵循任何特定命名约定的源代码文件。 所有人的共同点是在文件内部写有“((自动生成)”)注释。 问题在于,由于这些文件是由生成自动生成的,并且从未手工修改过,因此我不想将它们检入源代码管理中。

据我所知,没有简单的方法将这些文件添加到.gitignore因为它们没有遵循任何特定的命名约定。 也不是手动添加所有选项,因为它们有数百个,将来还会出现更多。 有什么办法可以使git忽略文件中所有包含“((自动生成的)”单词的文件?

git中没有创建基于内容的忽略规则的方法。 您可以大致估算一下。

您可以使用pre-commit钩子检查包含模式( (Autogenerated) )的文件,例如通过

for file in $(git grep -l --cached '(Autogenerated)') ; do

并将它们从索引中删除(如果找到)

    git rm --cached $file
done

当然,如果您可以更好地隔离误报,那将是很好的。 即使是部分文件名/路径模式来限制git grep查找的内容也会有所帮助。

如果您希望(或发现)误报是您无法避免的问题,则可能需要让挂钩打印出建议的文件列表以取消登台,然后拒绝提交,而不是取消登台并继续。 但是,那么您将需要一种让用户将他们想要提交的文件“白名单”的方式,并且挂钩必须对此进行检查。

客户端挂钩(例如pre-commit)的问题是,您必须在每个克隆上分别设置它们。 如果有人忘记了,那么他们将意外地检查生成的文件。

而且,在构建和提交周期的过程中,用户将在他们的工作树中累积未跟踪(但不能忽略)的文件,这有时会干扰他们想要做的事情。

如果您可以修改构建过程以在工作树之外(或者至少在您可以忽略的一致路径下)生成这些文件,那就更好了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM