我想在Cygwin中使用Sublime Text作为git的编辑器(我认为它是v.2.6.1-1,但无论如何,它是最近的版本)。
我这样设置core.editor
git config --global core.editor "/cygdrive/c/Program\ Files/Sublime\ Text\ 3/subl.exe -n -w"
现在,如果我这样做
git commit --amend
git启动Sublime,但是当我尝试保存消息时,我得到了
Unable to save C:\home\david\my_git_clone\.git\COMMIT_EDITMSG
Error: The system cannot find the path specified.
有谁知道我怎么能让这个工作?我已经找到了很多关于如何做类似事情的解释,但没有一个特定于git,Cygwin和Sublime。
尝试明确地将COMMIT_EDITMSG
的路径传递给Sublime。更新项目的.git/config
如下:
[core]
editor = /cygdrive/c/Program\ Files/Sublime\ Text\ 3/subl.exe `cygpath -w $PWD/.git/COMMIT_EDITMSG` -w
cygpath -w $PWD/.git/COMMIT_EDITMSG
将解析COMMIT_EDITMSG
的绝对路径并将其转换为Windows路径格式(根据cygpath documentation):
-u和-w选项指示是要转换为UNIX(POSIX)格式(-u)还是Windows格式(-w)。
需要制作一个介入的shell脚本。与difftool不同,git不会通过shell运行编辑器调用,因此您必须强制它。
所以: 〜/ bin / git-editor.sh:
`cygpath "C:\Program Files\Sublime Text 3\subl.exe"` `cygpath -w $1`
〜/ .gitconfig:
[core]
editor = ~/bin/git-editor.sh
该脚本不必完全位于〜/ bin。当您输入正确的路径时,可以在任何地方作为日志。
得到它与Mykhailo的解决方案一起使用。我在Windows上使用Ubuntu,所以我必须使用“wslpath”,就像cygpath一样,可以改变目录格式。现在唯一的问题是它打开了两个文件;一个工作正常,另一个路径仍然是Unix格式。工作,但我觉得每次关闭它都很烦人。
这是我添加到gitconfig的内容:
[core]
editor = /mnt/c/Program\\ Files/Sublime\\ Text\\ 3/subl.exe `wslpath.sh -w $PWD/.git/COMMIT_EDITMSG` -nw