Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建要附加到.gitignore的git别名_Git_Bash_Msysgit - Fatal编程技术网

创建要附加到.gitignore的git别名

创建要附加到.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

我在Windows上使用git 1.9.0(msysgit),我有以下别名:

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\\