xcode git ignore 用于 Mac OS X 上带有空格的目录
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3675641/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
git ignore for directories with spaces on Mac OS X
提问by pmc255
I'm trying to add some patterns to my .gitignore
file to ignore *.mode1v3 and *.pbxuser files generated by Xcode. However, my app name has a space in it, so the files I want to ignore are in the Foo Bar.xcodeproj/
directory. Adding variants of these patterns don't seem to work:
我正在尝试向我的.gitignore
文件添加一些模式以忽略由 Xcode 生成的 *.mode1v3 和 *.pbxuser 文件。但是,我的应用程序名称中有一个空格,因此我要忽略的文件在Foo Bar.xcodeproj/
目录中。添加这些模式的变体似乎不起作用:
*.mode1v3
Foo Bar.xcodeproj/
Foo Bar.xcodeproj/*.mode1v3
Foo Bar.xcodeproj/username.mode1v3
What should the .gitignore patterns be?
.gitignore 模式应该是什么?
采纳答案by Philipp
AFAIK spaces aren't treated specially; neither Pro Git nor gitignore(5)
nor fnmatch(3)
mentions them. Anyway the first pattern *.mode1v3
is totally sufficient; patterns without slashes are applied to all subdirectories. If you want additional ignore patters for a specific subdirectory, just place a dedicated .gitignore
in that directory.
AFAIK 空间没有被特殊对待;Pro Git 也gitignore(5)
没有fnmatch(3)
提及它们。无论如何,第一种模式*.mode1v3
是完全足够的;不带斜杠的模式应用于所有子目录。如果您想要特定子目录的其他忽略模式,只需.gitignore
在该目录中放置一个专用。
回答by Matthew Rankin
Have you tried escaping any spaces in the folder or file names with backslashes?
您是否尝试过使用反斜杠转义文件夹或文件名中的任何空格?
*.mode1v3
Foo\ Bar.xcodeproj/
Foo\ Bar.xcodeproj/*.mode1v3
Foo\ Bar.xcodeproj/username.mode1v3
Also, are these files already being tracked by git? From man gitignore
:
另外,这些文件是否已经被 git 跟踪了?来自man gitignore
:
A gitignore file specifies intentionally untracked files that git should ignore.
Note that all the gitignore files really concern only files that are not already
tracked by git; in order to ignore uncommitted changes in already tracked files,
please refer to the git update-index --assume-unchanged documentation.
Additionally, here are some of the patterns discussed in man gitignore
:
此外,这里有一些讨论的模式man gitignore
:
o If the pattern ends with a slash, it is removed for the purpose of the
following description, but it would only find a match with a directory. In
other words, foo/ will match a directory foo and paths underneath it, but will
not match a regular file or a symbolic link foo (this is consistent with the
way how pathspec works in general in git).
o 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).
o 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. For example, "Documentation/*.html" matches
"Documentation/git.html" but not "Documentation/ppc/ppc.html" or
"tools/perf/Documentation/perf.html".
o A leading slash matches the beginning of the pathname. For example, "/*.c"
matches "cat-file.c" but not "mozilla-sha1/sha1.c".