我在 Windows (msysgit) 上使用 git 1.9.0,我有以下别名:
ignore = "!f() { echo $1 >> \"${GIT_PREFIX}.gitignore\"; }; f"
我是这样使用它的:
$ git ignore /Directory/Subdir/
这应该附加到当前目录中我的 .gitignore
文件,或者如果它不存在则创建它。但是由于某种原因,我传递的路径被转换为绝对路径,我不确定为什么:
这是附加到我的 .gitignore
的内容:
C:/Program Files (x86)/Git/Docs/Doxygen/html/
发生这种情况的原因是什么?
编辑
如果我只是像这样使用命令:
$ git ignore Docs/Doxygen/html
它不会转换路径。因此,在将参数传递给别名之前,开头的正斜杠似乎在 shell 中引起了一些问题。用引号括起来也不能解决问题。我很茫然!
编辑 #2
试过这个:
$ git ignore \/Docs/Doxygen/html/
C:/Program Files (x86)/Git/Docs/Doxygen/html/
正斜杠之前的反斜杠也不能解决这个问题。
编辑 #3
我认为这是 msysgit 中的错误。我在 cygwin 中做了同样的事情,看看会发生什么:
$ git ignore /Docs/Doxygen/html/
/Docs/Doxygen/html/
:-(
最佳答案
msys 的转换规则记录在 POSIX path conversion 上页面。
An argument with a leading / is converted up to the first /
根据文档,您应该在路径前加上//以仅对第一个斜杠进行转换,并将正斜杠转换为反斜杠:
//foo\bar ➜ /foo/bar ➜ \ converted to /
Try,
$ git ignore "//Directory\Subdir\"
还有,
$ git ignore //Directory\\Subdir\\
关于git - 创建一个 git 别名以附加到 .gitignore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21945872/