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

标签 git bash msysgit

我在 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/

相关文章:

ruby-on-rails - git push remote 在代理后面的问题

linux - 在 shell 中提取文件名的一部分

Bash 管道 : split input after 1st line, 在第 1 行和其余行上运行不同的命令

windows - Git for Windows (Git Bash) 中的包管理?

windows - msysGit Bash 无法转义其主目录?

Git: merge 结构非常不同的分支

git - 如何从标签中删除 Git 提交?

git - 如何在 Azure DevOPS 服务器上使用 PAT 克隆 git 存储库

linux - 给定行分隔的文本 block ,如何返回包含特定关键字的每个 block ?

windows - msysgit vim 光标线在我的浅色背景上是深色的。如何将其设置为点亮或关闭