创建要附加到.gitignore的git别名
我在Windows上使用git 1.9.0(msysgit),我有以下别名:创建要附加到.gitignore的git别名,git,bash,msysgit,Git,Bash,Msysgit,我在Windows上使用git 1.9.0(msysgit),我有以下别名: ignore = "!f() { echo $1 >> \"${GIT_PREFIX}.gitignore\"; }; f" 我是这样使用它的: $ git ignore /Directory/Subdir/ 这应该附加到当前目录中的my.gitignore文件中,如果它不存在,则创建它。但是,由于某种原因,我要传递的路径正在转换为绝对路径,我不确定原因: 下面是我的.gitignore的附加内容: C
ignore = "!f() { echo $1 >> \"${GIT_PREFIX}.gitignore\"; }; f"
我是这样使用它的:
$ git ignore /Directory/Subdir/
这应该附加到当前目录中的my.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中的一个bug。我在cygwin做了同样的事情,看看会发生什么:
$ git ignore /Docs/Doxygen/html/
/Docs/Doxygen/html/
:-(msys的转换规则记录在页面上 带前导/的参数转换为第一个/
根据文档,您应该在路径前面加//前缀,以便仅转换第一个斜杠,并将正斜杠转换为反斜杠: //foo\bar ➜ /foo/bar ➜ \ converted to / 以及
当您以字符串形式传递路径时会发生什么情况?如
git ignore'/Docs/Doxygen/html'
?我认为对于MSYS,您需要使用双正斜杠//Docs/Doxygen/htmlIt,这确实是在msysgit实用程序中处理参数中的posix路径的一个问题。感谢这项工作,尽管它使用反斜杠时需要像这样转义://foo\\bar
。然而,虽然这不是一个缺陷,但它是一个蹩脚的功能,因为cygwin的工作很好。例如,不必要的反斜杠和双正斜杠令人难以置信地困惑。出于这个原因,我可能只是让cygwin与git一起工作,而不是直接使用msysgit。@RobertDailey感谢您的精心设计。Robert。我已经更新了回答。
$ git ignore "//Directory\Subdir\"
$ git ignore //Directory\\Subdir\\