如何用.gitignore排除含反斜杠的Windows无效Git文件名?
Git排除含反斜杠文件的解决方案
为什么你原来的规则没用?
/*\*/:Git里.gitignore的反斜杠是转义符,这个规则实际会被解析成/**/——也就是找根目录里名字带*的文件/文件夹,跟反斜杠完全不沾边,当然拦不住目标文件。snap-git:这个规则只匹配仓库根目录下叫snap-git的独立文件或文件夹,而你要排除的是路径里文件名带snap-git前缀且有反斜杠的文件,根本对不上号。
正确的.gitignore规则
1. 全局排除所有带反斜杠的文件
如果想把仓库里所有带反斜杠的文件都排除,加这条:
**/*\*
**:不管文件在多少层子目录里,都能匹配到对应的路径*\*:前面的*匹配反斜杠前的任意字符,\是转义用的(要匹配字面的反斜杠必须这么写),后面的*匹配反斜杠后的内容,整体就能抓到所有带反斜杠的文件名。
2. 精准排除特定路径下的目标文件
要是只想针对etc/systemd/system/路径下的这类文件,写更具体的规则:
etc/systemd/system/*\*
注意别加开头的斜杠,.gitignore里的路径是相对于仓库根目录的相对路径。
关于.gitignore匹配逻辑的补充
- 不带斜杠的规则(比如
snap-git):会匹配仓库所有目录里同名的文件/文件夹,不是只找当前目录。 - 带斜杠的规则(比如
foo/):只匹配当前目录下的foo文件夹;**/foo能匹配所有目录里的foo文件/文件夹。 **这个通配符需要Git 1.8.2及以上版本支持,老版本用不了。
内容的提问来源于stack exchange,提问作者klor
相关产品推荐
相关产品推荐

