我在emacs中使用egg(emacs get git)作为git接口。
每当我尝试实现提交--amend时,我都会收到"GIT-COMMIT-AMEND> Aborting commit due to empty commit message".
这就是我的所作所为:
C-u C-x v c
然后出现提交缓冲区,带有我之前提交的消息。
然后在C-c C-c
上,我收到上述消息:空提交消息。
我认为我以前曾经常常提交这种行为(如不修改),但不记得或找不到我的解决方法。
我尝试编辑邮件(在某处添加空格)。没有工作。
我尝试在提交之前保存缓冲区,这也不起作用(因为C-c C-c
在提交缓冲区之外的另一个缓冲区中没有活动)。
有任何线索吗?
答案 0 :(得分:1)
这是因为编辑器emacs尝试打开commit --amend
吗?见this exchange
[06:28:18] <burningdog>
问题:这是我第一次使用git提交。我希望“git commit
”允许我输入提交消息,但它会在TextWrangler(我在Mac上)中打开.git/COMMIT_EDITMSG
并终止提交,说“{{1} }“ 我究竟做错了什么?
Aborting commit due to empty commit message.
burningdog:打开时可能[06:29:24] <Ilari>
与shell分离。这会导致git在编辑器打开时认为您已完成提交消息。
TextWrangler
Ilari:嗯......这听起来很对。[06:30:10] <burningdog>
将发送给它的任何内容发送给/usr/bin/edit
。也许我可以改变它......
TextWranger
burndog:要么选择不要这么做。否则将提交消息写入文件,然后使用[06:30:27] <Ilari>
提交。
-F <file>
Ilari:当用户输入提交消息时,git是否会调用[06:31:26] <burningdog>
的行为?
/usr/bin/edit
用于确定要打开的编辑器的设置很少。
[06:32:09] <Ilari>
啊,以便在某些编辑器中打开默认文本。得到它了。
[06:32:54] <burningdog>
Burningdog:[06:34:06] <Ilari>
和core.editor $GIT_EDITOR $VISUAL
$EDITOR
Ilari:我改变了我的bash配置文件以使用pico作为编辑器 - 修正了它。谢谢你的帮助:)
答案 1 :(得分:1)
问题解决了,虽然我不太明白。
我不得不改变鸡蛋的一些选择。在某些情况下,它似乎没有正确的字符串来查找git.exe
。
我做了什么:
M-x customize-group <RET> egg <RET>
然后将Egg git command
更改为git.exe
,包括其完整路径。
这有点奇怪,因为:
在学习如何调试elisp之后,我发现在函数nil
中,应该显示提交消息限制的标记都是egg-log-msg-commit
。
在其他地方,这些标记包含提交消息的字符索引,但不包含。
答案 2 :(得分:1)
我只是尝试使用PsPad作为提交编辑器,但是没有用。它失败并显示相同的错误消息。这里的问题是git调用它的编辑器:
[Path]\PsPad.exe .git/COMMIT_EDITMSG
但是PsPad无法使用'/'解析该路径,这导致PsPad在存储库根文件夹中打开文件COMMIT_EDITMSG而不是在子文件夹'.git'中。 我不使用emacs / egg,所以我不能重现你的问题,但也许这些信息也有帮助。
对于PsPad用户:我通过使用这个包装器脚本调用PsPad解决了我的问题:
"C:\Programme\PsPad editor\PsPad" $(echo $1 | sed 's/\//\\/')
该代码行包含在用作git编辑器的批处理文件中。它只是将所有'/'替换为'\',这使得PsPad被称为:
[Path]\PsPad .git\COMMIT_EDITMSG
答案 3 :(得分:0)
我在Windows上使用MSYS git。设置实际git.exe
的路径为我解决了这个问题。 (对我来说,正确的路径是:'c:\ Program Files \ Git \ bin \ git.exe')。
默认情况下,MSYS git会添加到路径git.cmd,这显然会猜测git.exe的位置等等。不过,我认为这会混淆与emacs的联系。
编辑:上述方法存在一个缺陷。 git.cmd显然设置了home环境变量。一些git设置是在那里写的。与emacs一起使用时,git.exe将从emacs接收环境。因此,建议确保git在从命令行执行时具有与emacs相同的主目录。我个人通过在启动期间更改HOME环境变量在emacs配置中修复此问题,但这会产生一些副作用,例如编辑.emacs文件。