我正在试用Windows上的Git。我到了尝试“git commit”的地步,我得到了这个错误:
终端是哑的,但没有视觉也
编辑器定义。请提供
消息使用-m或-F选项。
所以我发现我需要一个叫做EDITOR的环境变量。没有问题。我把它设置为指向记事本。这几乎奏效了。默认的提交消息在记事本中打开。但是记事本不支持换行。我出去得到了notepad++,但我不知道如何将notepad++设置为%EDITOR%,使其与Git正常工作。
我没有嫁给notepad++。在这一点上,我不介意我使用什么编辑器。我只是希望能够在编辑器中而不是在命令行中输入提交消息(使用-m)。
那些在Windows上使用Git的人:你使用什么工具来编辑你的提交消息,你必须做什么才能让它工作?
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
假设你想配置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
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
不管怎样,我只是在玩这个,发现下面的工作对我来说很好:
git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"
我不认为CMD喜欢单引号,所以你必须使用双引号“来指定空格嵌入字符串参数”。
Cygwin(我相信它是Git的Bash的底层平台)另一方面喜欢“和”;你可以指定一个类似cmd的路径,使用/而不是\,只要字符串是引号,即在这个例子中,使用单引号。
-m覆盖/表示使用多个编辑器,不需要在末尾加%*。
我在多个平台上使用Git,并且我喜欢在所有平台上使用相同的Git设置。(事实上,我用Git对所有配置文件进行了发布控制,并在每台机器上放置了一个Git存储库克隆。)我想到的解决办法是:
我将编辑器设置为giteditor
git config --global core.editor giteditor
然后我在PATH中创建了一个名为giteditor的符号链接。(我有一个个人的bin目录,但在PATH中的任何地方都可以工作。)这个链接指向我现在选择的编辑。在不同的机器和平台上,我使用不同的编辑器,所以这意味着我不需要更改我的通用Git配置(.gitconfig),只需更改giteditor指向的链接。
我所知道的每个操作系统都可以处理符号链接,尽管它们可能使用不同的命令。对于Linux,你用ln -s。对于Windows,您使用cmd内置mklink。它们有不同的语法(你应该查一下),但它们的工作方式是一样的,真的。
那些在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文档。