我正在试用Windows上的Git。我到了尝试“git commit”的地步,我得到了这个错误:
终端是哑的,但没有视觉也
编辑器定义。请提供
消息使用-m或-F选项。
所以我发现我需要一个叫做EDITOR的环境变量。没有问题。我把它设置为指向记事本。这几乎奏效了。默认的提交消息在记事本中打开。但是记事本不支持换行。我出去得到了notepad++,但我不知道如何将notepad++设置为%EDITOR%,使其与Git正常工作。
我没有嫁给notepad++。在这一点上,我不介意我使用什么编辑器。我只是希望能够在编辑器中而不是在命令行中输入提交消息(使用-m)。
那些在Windows上使用Git的人:你使用什么工具来编辑你的提交消息,你必须做什么才能让它工作?
我也在Windows上使用Cygwin,但使用的是gVim(与基于终端的Vim相反)。
为了做到这一点,我做了以下工作:
创建一个单行批处理文件(命名为git_editor.bat),其中包含以下内容:
"C:/Program Files/Vim/vim72/gvim.exe"——nofork "%*"
将git_editor.bat放在我的PATH中。
设置GIT_EDITOR = git_editor.bat
完成此操作后,git提交等将正确地调用gVim可执行文件。
注1:gVim的——nofork选项确保它阻塞直到提交消息被写入。
注2:如果路径中有空格,则必须在gVim路径周围加上引号。
注意3:“%*”周围的引号是必要的,以防Git传递一个带空格的文件路径。
假设你想配置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