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

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

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

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

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


当前回答

我使用GIT_EDITOR变量和notepad2作为编辑器解决了类似的问题。

解决方法一:将环境变量GIT_EDITOR设置为“C:/tools/notepad2.exe”。这工作得很好,但是如果提交消息有非ascii字符,git会报错。

方案二:将“GIT_EDITOR”设置为“C:/tools/notepad2.exe //utf8”。注意程序开关前的双斜杠。顺便说一句:-utf8也可以。

其他回答

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

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

在我的git编辑器和通用代码编辑器中,我发现在Windows和Linux中最有用的工具是Sublime Text 3。它工作得很好,但需要一点设置才能让它正确,所以我在这里完整地记录了这一点:

如何让Git使用我选择的编辑器进行提交?- Sublime Text 3作为Git编辑器的最佳设置(Windows和Linux指令)

关于我的主编辑器的边注:对于大型项目,我使用Eclipse作为我的主编辑器,Sublime Text 3作为我的git编辑器,当我需要使用它的高级功能时,如多光标模式,垂直/列选择模式等。对于中小型项目,我只使用Sublime Text 3本身。有关Eclipse的设置说明,请参阅我的PDF文档。

假设你想配置VsCode为你的编辑器。 做以下几点:

在.gitconfig文件中添加以下代码行:

gitconfig文件的默认位置是C:\Users\USER_NAME\.gitconfig

[core]
  editor = code -w -n
[diff]
  tool = vscode
[difftool "vscode"]
  cmd = code -w -n --diff $LOCAL $REMOTE
[merge]
  tool = vscode
[mergetool "vscode"]
  cmd = code -w -n $MERGED

注意: -w是必选项,告诉git等待vscode加载。 -n是可选的,它告诉git在新窗口中打开vscode。

如果你想在Windows中配置一个自定义的编辑器路径:

您需要将字code替换为VsCode的“。exe”路径。

例如:

[core]
  editor = "'C:/Users/Tal/AppData/Local/Programs/Microsoft VS Code/Code.exe'" -w -n
[diff]
  tool = vscode
[difftool "vscode"]
  cmd = "'C:/Users/Tal/AppData/Local/Programs/Microsoft VS Code/Code.exe'" -w -n --diff $LOCAL $REMOTE
[merge]
  tool = vscode
[mergetool "vscode"]
  cmd = "'C:/Users/Tal/AppData/Local/Programs/Microsoft VS Code/Code.exe'" -w -n $MERGED

注意: 你需要用单引号包围路径”。 路径中的斜杠应该是正斜杠/。

再举一个例子:

[core]
    editor = \"C:\\Users\\Tal\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe\" -w -n

[diff]
    tool = vscode
[difftool "vscode"]
    cmd = \"C:\\Users\\Tal\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe\" -w -n --diff $LOCAL $REMOTE

[merge]
    tool = vscode
[mergetool "vscode"]
    cmd = \"C:\\Users\\Tal\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe\" -w -n $MERGED

更新:

VsCode现在支持“3路合并”! 更新版本为1.69和1.70.0。 所以现在你可以启用VsCode的“mergetool”来查看3向合并。

为此,你需要更新行:

[mergetool "vscode"]
      cmd = code -w -n $MERGED

与新行:

[mergetool "vscode"]
      cmd = code -w -n --merge $REMOTE $LOCAL $BASE $MERGED

记事本!

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

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

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

如果路径中有空格,Git似乎无法找到编辑器。因此,您必须将Patrick回答中提到的批处理文件放到非空白路径中。