如何忽略或永久阻止文件名中包含日期或日期+时间的文件被Git检测为添加/修改的文件



正如我在Q-title中提到的,我有一些文件名中包含date字符串或日期+时间时间戳的文件,这些文件位于Git配置的项目中。

带有日期或时间戳(date+time)的文件名如下:

....
....
FileName1_18-07-2022.php
FileName2_18-07-2022_10-28-17_PM.vue
FileNameOther1_18-07-2022_10-28-28_PM.vue
....
....

并且有超过20个这样的文件,我希望在Git检测中永久忽略它们。文件名可以有数字,但是当文件名中包含确切的日期格式字符串(如上面的例子所示)时,无论何时创建/修改,它们都不能被Git检测到。

我知道有两种方法,一种是.gitignore,另一种是在项目的.git/info/exclude中,我知道*?等通配符,但不知道如何阻止那些名称中有日期或日期+时间的文件。

谁能帮我解决这个问题?

注意:"_PM"或";_AM"是可选的,显然只有当文件名包含完整的日期+时间字符串时,它们才会出现。date或date+time字符串将始终按照上面列表所示的精确模式。没有其他的日期/日期+时间模式。

添加到您的.gitignore:

*_??-??-????[._]*

这将匹配日期后跟点或下划线的文件,并且不太可能匹配其他任何内容。

在John Kugelman的回答和turek的一些不错的评论建议的帮助下,我想出了一个从1000年到9999年不会有任何问题的模式;)。因此,这完全匹配我在项目中拥有的所有文件名模式并成功忽略这些文件,当该模式添加到.gitignore.git/info/exclude文件时:

*_[0123][0-9]-[01][0-9]-[1-9][0-9][0-9][0-9][._]*.php
*_[0123][0-9]-[01][0-9]-[1-9][0-9][0-9][0-9][._]*.vue

如果有人想阻止所有的文件扩展名,那么他们可以使用这个:

*_[0123][0-9]-[01][0-9]-[1-9][0-9][0-9][0-9][._]*.*

感谢John和turek的帮助。任何有任何建议或指出的人都可以在下面的评论中提到。