Cygwin git向我的编辑器传递错误的路径以提交消息

Abb*_*ner 5 git cygwin

我在cygwin下使用git但它没有将正确的路径传递给我的编辑器以提交消息.

我在位于我的驱动器上的测试存储库中工作:

d:\X\git\myproject
Run Code Online (Sandbox Code Playgroud)

在cygwin终端中,它将此路径显示为:

/cygdrive/d/X/git/myproject
Run Code Online (Sandbox Code Playgroud)

当我在没有-m标志的情况下提交(以便它打开我的编辑器让我输入消息)时,我的编辑器会尝试将文件写入错误的路径:

d:\cygdrive\d\x\git\myproject\.git\commit_editmsg
Run Code Online (Sandbox Code Playgroud)

注意添加"\ cygdrive\d"

如何让git将windows路径(而不是cygwin/unix路径)传递给我的编辑器?

小智 5

cygwin有一个名为的实用程序cygpath,可用于在cygwin和本机Windows文件路径之间进行转换.例如:

$ cygpath --windows /cygdrive/d/X/git/myproject
D:\X\git\myproject
Run Code Online (Sandbox Code Playgroud)

我们将创建一个脚本,该脚本使用此实用程序在将路径传递给编辑器之前转换路径.我们将使用emacs作为示例,假设它已安装在C:\emacs.创建一个名为的文件~/bin/git-editor.sh:

#!/bin/sh
/cygdrive/c/emacs/bin/emacsclientw.exe $(cygpath --windows "${1}")
Run Code Online (Sandbox Code Playgroud)

(因为这是Windows,我们不需要在此文件上设置可执行标志)

现在,设置你的git编辑器指向这个脚本:

$ git config --global core.editor "~/bin/git-editor.sh"
Run Code Online (Sandbox Code Playgroud)