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

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

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

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

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


当前回答

我的PortableGit 1.6运行良好,但在升级到PortableGit 1.7 Windows版本后,我遇到了一些问题。有些Git命令可以打开notepad++ .exe,但有些不能,尤其是Git rebase的行为不同。

问题是有些命令运行Windows的cmd进程,有些命令使用Unix的cmd进程。我想给启动属性notepad++编辑器,所以我需要有一个自定义脚本。我的解是这个。

Create a script to run an appropriate text editor. The script looks weird, but it handles both the Windows and Unix variation. c:/PortableGit/cmd/git-editor.bat #!/bin/sh # Open a new instance function doUnix() { "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $* exit } doUnix $* :WINCALL "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %* Set the global core.editor variable The script was saved to git/cmd folder, so it's already in a gitconsole path. This is mandatory as a full path may not work properly. git config --global core.editor "git-editor.bat"

现在我可以运行git commit -a和git rebase -i master命令。如果你在Git Windows工具中遇到问题,可以尝试一下。

其他回答

我在Windows上使用Cygwin,所以我使用:

export EDITOR="emacs -nw"

-nw代表无窗口,即告诉Emacs不要尝试使用X窗口。

Emacs键绑定不能从Windows shell中为我工作,所以我只会从Cygwin shell中使用这个…(建议使用rxvt)

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

作为拐杖,我一直在做。

git commit -m "Fixed the LoadAll method"

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

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

以下是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命令

记事本!

我很喜欢使用Vim,但由于我试图向公司介绍Git,所以我想要一些我们都拥有的东西,并且发现写字板似乎可以正常工作(即Git会等待您完成编辑并关闭窗口)。

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

这是在msysgit上使用Git Bash;我没有尝试从Windows命令提示符(如果这有任何不同)。

这是更严重问题的一个症状。值得注意的是,你有一些设置TERM=dumb。其他不能正常工作的是less命令,它表示您没有一个功能齐全的终端。

这似乎最常见的原因是将TERM设置为全局Windows环境变量中的某个值。对我来说,当我安装草莓Perl时出现了这个问题,关于这个问题的一些信息是关于msysgit bug以及几个解决方案的。

第一个解决方案是在您的~/中修复它。Bashrc补充道:

export TERM=msys

你可以在Git Bash提示符中这样做:

echo "export TERM=msys" >> ~/.bashrc

另一个解决方案,最终是我所做的,因为我不关心Strawberry Perl在我的环境设置中添加TERM=dumb的原因,是按照msysgit错误报告的注释中的指示删除TERM=dumb。

控制 面板/系统/高级/环境 变量……(或类似,取决于 你的Windows版本)在哪里 设置Sticky环境变量 在Windows上。默认情况下,TERM不是 集。如果TERM设置在这里,那么你 (或者你有一个程序 已安装-例如草莓Perl) 设置它。删除那个设置,还有你 应该没问题。

类似地,如果您使用Strawberry Perl并且关心CPAN客户端或类似的东西,您可以不使用TERM=dumb,而在~/中使用未设置的TERM。Bashrc文件,它将具有类似于设置上面的显式术语的效果。

当然,所有其他解决方案都是正确的,因为你可以使用git config -global core。$MYFAVORITEEDITOR以确保Git在需要为你启动一个编辑器时使用你最喜欢的编辑器。