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

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

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

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

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


当前回答

根据VonC的建议,这对我很有效(差点把我逼疯了):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

省略-wait可能会导致问题,特别是如果你正在使用Gerrit,并且更改id必须手动复制到提交消息的底部。

其他回答

我在多个平台上使用Git,并且我喜欢在所有平台上使用相同的Git设置。(事实上,我用Git对所有配置文件进行了发布控制,并在每台机器上放置了一个Git存储库克隆。)我想到的解决办法是:

我将编辑器设置为giteditor

git config --global core.editor giteditor

然后我在PATH中创建了一个名为giteditor的符号链接。(我有一个个人的bin目录,但在PATH中的任何地方都可以工作。)这个链接指向我现在选择的编辑。在不同的机器和平台上,我使用不同的编辑器,所以这意味着我不需要更改我的通用Git配置(.gitconfig),只需更改giteditor指向的链接。

我所知道的每个操作系统都可以处理符号链接,尽管它们可能使用不同的命令。对于Linux,你用ln -s。对于Windows,您使用cmd内置mklink。它们有不同的语法(你应该查一下),但它们的工作方式是一样的,真的。

我需要做以下两件事来让Git在Windows中启动notepad++:

将以下内容添加到.gitconfig中: editor = 'C:/Program Files/ notepad++ /notepad++.exe' -multiInst -notabbar -nosession -noPlugin .exe 修改快捷方式以管理员身份启动Git Bash shell,然后使用该快捷方式启动Git Bash shell。我猜上下文菜单项“Git Bash here”没有启动notepad++所需的权限。

在做了以上两件事之后,它起作用了。

我很难让Git与写字板、科莫多编辑器以及我给它的几乎所有其他编辑器合作。大多数打开以供编辑,但Git显然不会等待保存/关闭发生。

作为拐杖,我一直在做。

git commit -m "Fixed the LoadAll method"

让事情继续发展。它往往会使我的提交消息比应该的要短一些,但显然在Windows版本的Git上还有一些工作要做。

GitGUI也不是那么糟糕。它需要一点定位,但在那之后,它工作得很好。

notepad++工作得很好,尽管我选择坚持使用Notepad, -m,有时甚至是内置的“编辑”。

您在使用notepad++时遇到的问题与Git如何启动编辑器可执行文件有关。我对此的解决方案是将环境变量编辑器设置为一个批处理文件,而不是实际的编辑器可执行文件,这样做如下:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAIT告诉命令行会话停止,直到应用程序退出,这样当Git愉快地等待您时,您就可以按照自己的意愿进行编辑。%*将批处理文件的所有参数传递给notepad++。

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

当使用远程挂载的主驱动器(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你有正确的编辑器,无论你在哪里。