2015年9月更新(6年后)
git-for-Windows的最新版本(2.5.3)现在包括:
通过配置git配置核心。编辑notepad,用户现在可以使用notepad.exe作为默认编辑器。
commitmessagecolumns 72将被记事本包装器拾取,并在用户编辑后对提交消息进行换行。
参见Johannes Schindelin (dscho)的commit 69b301b。
Git 2.16(2018年第一季度)在生成编辑器时将显示一条消息告诉用户它正在等待用户完成编辑,以防编辑器
打开到一个隐藏的窗口或某个模糊的地方,用户得到
丢失。
参见Lars Schneider (larsxschneider)提交abfb04d(2017年12月7日)和提交a64f213(2017年11月29日)。
协助:Junio C Hamano(吉特)。
(由Junio C Hamano—gitster—在commit 0c69a13中合并,2017年12月19日)
launch_editor(): indicate that Git waits for user input
When a graphical GIT_EDITOR is spawned by a Git command that opens
and waits for user input (e.g. "git rebase -i"), then the editor window
might be obscured by other windows.
The user might be left staring at
the original Git terminal window without even realizing that s/he needs
to interact with another window before Git can proceed. To this user Git
appears hanging.
Print a message that Git is waiting for editor input in the original
terminal and get rid of it when the editor returns, if the terminal
supports erasing the last line
原来的答案
我刚刚用git版本1.6.2.msysgit.0.186测试了它。gf7512和notepad++ 5.3.1
我更喜欢不设置编辑器变量,所以我尝试了:
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"
它总是给出:
C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.
如果我定义一个npp.bat,包括:
"c:\Program Files\Notepad++\notepad++.exe" %*
然后我输入:
C:\prog\git>git config --global core.editor C:\prog\git\npp.bat
它只能在DOS会话中工作,而不能在git shell中工作。
(不是那个核心。编辑器配置机制,一个脚本“start /WAIT…”在它不会工作,但只打开一个新的DOS窗口)
Bennett的回答提到了避免添加脚本的可能性,而是在简单的引号之间直接引用程序本身。注意斜线的方向!使用/ NOT \以路径名分隔文件夹!
git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
如果你使用的是64位系统:
git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
但是我更喜欢使用脚本(见下文):这样我就可以使用不同的路径或不同的选项,而不必再次注册git配置。
实际的解决方案(使用脚本)是实现:
你在配置文件中提到的实际上是一个shell (/bin/sh)脚本,而不是DOS脚本。
所以有效的方法是:
C:\prog\git>git config --global core.editor C:/prog/git/npp.bat
C: /食物/ git / npp.bat:
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"
or
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"
有了这个设置,我可以从DOS或git Shell执行'git config -global -edit',或者我可以执行'git rebase -i…从DOS或Git Shell。
Bot命令将触发一个notepad++的新实例(因此使用-multiInst'选项),并等待该实例关闭后再继续。
注意,我只使用'/',而不是\'。我使用选项2安装了msysgit。(将git\bin目录添加到PATH环境变量中,但不覆盖一些内置的windows工具)
notepad++包装器被称为.bat这一事实并不重要。
最好将其命名为'npp.sh',并将其放在[git]\cmd目录中(或在由PATH环境变量引用的任何目录中)。
参见:
我如何查看' git diff '输出与视觉diff程序?对于一般理论
如何使用msysgit / gitk设置DiffMerge ?另一个外部工具的例子(DiffMerge和WinMerge)
Lightfire228在评论中补充道:
对于任何遇到n++只打开一个空白文件,git不接受你的提交消息的问题,请参阅“由于空消息而中止提交”:更改你的.bat或.sh文件如下:
"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>.
这将告诉notepad++打开临时提交文件,而不是一个空白的新文件。