我在Windows上使用git 1.9.0(msysgit),我有以下别名:
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中会导致一些问题。将其包含在引号中也不能解决问题。我不知所措!
试过这个:
$ git ignore \/Docs/Doxygen/html/
C:/Program Files (x86)/Git/Docs/Doxygen/html/
正斜杠之前的反斜杠也不会修复它。
我认为这是msysgit中的一个错误。我在cygwin中做了同样的事情,看看会发生什么:
$ git ignore /Docs/Doxygen/html/
/Docs/Doxygen/html/
: - (
答案 0 :(得分:1)
msys的转换规则记录在POSIX path conversion页面上。
带有前导/的参数被转换为第一个/
根据文档,你应该在路径前面加上//只让第一个斜杠进行转换,并将正斜杠转换为反斜杠:
//foo\bar ➜ /foo/bar ➜ \ converted to /
尝试,
$ git ignore "//Directory\Subdir\"
和
$ git ignore //Directory\\Subdir\\