我正在试用Windows上的Git。我到了尝试“git commit”的地步,我得到了这个错误:

终端是哑的,但没有视觉也 编辑器定义。请提供 消息使用-m或-F选项。

所以我发现我需要一个叫做EDITOR的环境变量。没有问题。我把它设置为指向记事本。这几乎奏效了。默认的提交消息在记事本中打开。但是记事本不支持换行。我出去得到了notepad++,但我不知道如何将notepad++设置为%EDITOR%,使其与Git正常工作。

我没有嫁给notepad++。在这一点上,我不介意我使用什么编辑器。我只是希望能够在编辑器中而不是在命令行中输入提交消息(使用-m)。

那些在Windows上使用Git的人:你使用什么工具来编辑你的提交消息,你必须做什么才能让它工作?


当前回答

以下是Cygwin的解决方案:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}

如果没有路径,则不传递路径 如果path为空,则传递空路径 如果path不为空,请转换为Windows格式。

然后我设置这些变量:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'

编辑器允许脚本与Git一起工作 GIT_EDITOR允许脚本使用Hub命令

其他回答

我只是遇到了同样的问题,却找到了不同的解决方案。我正在

error: There was a problem with the editor 'ec'

我有VISUAL=ec,在我的路径上有一个名为ec.bat的批处理文件,其中包含一行:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

这让我可以用ec <filename>从命令行编辑文件,并且拥有VISUAL set意味着大多数unix程序也会选择它。Git搜索路径的方式似乎与我的其他命令不同——当我在进程监视器中查看Git提交时,我看到它在ec和ec.exe路径上的每个文件夹中查找,但没有ec.bat。我添加了另一个环境变量(GIT_EDITOR=ec.bat),一切正常。

Vim/gVim很适合我。

>echo %EDITOR%

c:\Vim\Vim71\vim.exe

这是我使用Geany作为Git编辑器的设置:

git config --global core.editor C:/path/to/geany.bat

geany.bat中包含以下内容:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

它可以在DOS控制台和msysgit中工作。

我更喜欢使用Emacs。设置它可能有点棘手。

下载Emacs并解压到c:\ Emacs这样的地方。 运行c: \ emacs \ bin \ addpm.exe。如果你使用windowsvista或以上版本,你需要右键点击“以管理员身份运行”。这将把可执行文件放到您的路径中。 在.emacs文件中添加(server-start)。关于将. Emacs文件放在哪里,请参阅Emacs Windows FAQ。 Git配置——全局核心。编辑emacsclientw

Git现在将在现有的Emacs进程中打开文件。您必须从c:\emacs\bin\runemacs.exe手动运行现有进程。

当使用远程挂载的主驱动器(Samba共享、NFS,…)时,您的~/。Git文件夹在所有系统中共享,这可能会导致几个问题。因此,我更喜欢用脚本来确定正确系统的正确编辑器:

#!/usr/bin/perl
# Detect which system I'm on and choose the right editor
$unamea = `uname -a`;
if($unamea =~ /mingw/i){
    if($unamea =~ /devsystem/i){#Check hostname
        exec('C:\Program Files (x86)\Notepad++\notepad++.exe', '-multiInst', '-nosession', @ARGV);
    }
    if($unamea =~ /testsystem/i){
        exec('C:\Program Files\Notepad++\notepad++.exe', '-multiInst', '-nosession', @ARGV);
    }
}
$MCEDIT=`which mcedit`;
if($MCEDIT =~ /mcedit/){
    exec($MCEDIT, @ARGV);
}
$NANO=`which nano`;
if($NANO =~ /nano/){
    exec($NANO, @ARGV);
}
die "You don't have a suitable editor!\n";

人们可能会考虑使用普通的shell脚本,但我使用的是Perl,因为它随msysgit一起提供,而且您的类unix系统通常也会提供一个。 将脚本放在/home/username/bin中,该脚本应该添加到.bashrc或.profile中的PATH中。一旦添加了git配置-全局核心。编辑器giteditor。pl你有正确的编辑器,无论你在哪里。