创建一个git别名以附加到.gitignore

时间:2014-02-21 21:48:59

标签: git bash msysgit

我在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中会导致一些问题。将其包含在引号中也不能解决问题。我不知所措!

编辑#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/

: - (

1 个答案:

答案 0 :(得分:1)

msys的转换规则记录在POSIX path conversion页面上。

  

带有前导/的参数被转换为第一个/

根据文档,你应该在路径前面加上//只让第一个斜杠进行转换,并将正斜杠转换为反斜杠:

//foo\bar ➜ /foo/bar ➜ \ converted to /

尝试,

$ git ignore "//Directory\Subdir\"

$ git ignore //Directory\\Subdir\\