为什么gitignore在这种情况下工作? [英] Why doesn't gitignore work in this case?
问题描述
我有两个我希望忽略的文件:
我认为将这一规则添加到.gitignore就足够了:
.idea / workspace.xml
但它仅捕获顶级.idea / workspace.xml(git status显示someapp / src / .idea / workspace.xml为未跟踪)。
<我也尝试过
** /。idea / workspace.xml
,但是这根本不起作用。帮助?
- [...] $ b
- 如果模式不包含斜杠/,git会将其视为shell glob模式,并检查与路径名相对于.gitignore文件位置的匹配(相对于工作树的顶层if而不是来自.gitignore文件)。
- 否则,git会将该模式视为适合fnmatch(3)与FNM_PATHNAME标志使用的shell glob:模式中的通配符不会与路径名中的/匹配。 [b]
只要路径包含斜线,Git就不会再检查匹配的路径,而是直接使用glob行为。因此,您无法匹配 .idea / workspace.xml
,但仅适用于 workspace.xml
。
I have two files I wish to ignore:
- .idea/workspace.xml
- someapp/src/.idea/workspace.xml
I thought adding this single rule to .gitignore will suffice:
.idea/workspace.xml
But it only catches the top-level .idea/workspace.xml (git status shows someapp/src/.idea/workspace.xml as untracked).
I also tried **/.idea/workspace.xml
, but this doesn't work at all. Help?
- […]
- If the pattern does not contain a slash /, git treats it as a shell glob pattern and checks for a match against the pathname relative to the location of the .gitignore file (relative to the toplevel of the work tree if not from a .gitignore file).
- Otherwise, git treats the pattern as a shell glob suitable for consumption by fnmatch(3) with the FNM_PATHNAME flag: wildcards in the pattern will not match a / in the pathname. […]
As soon as the path contains a slash, Git will no longer check for a match in the path but instead will use the glob behaviour directly. As such, you cannot match for .idea/workspace.xml
but only for workspace.xml
.
这篇关于为什么gitignore在这种情况下工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!