2

我在 emacs 中使用 egg (emacs got 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在提交缓冲区之外的另一个缓冲区中不活动)。

有什么线索吗?

4

4 回答 4

1

这是因为编辑器emacs试图打开一个commit --amend吗?看到这个交流

[06:28:18] <burningdog> 问题:这是我第一次使用 git 提交。我希望“ git commit”允许我输入提交消息,但它会.git/COMMIT_EDITMSG在 TextWrangler 中打开(我在 Mac 上)并终止提交,说“ Aborting commit due to empty commit message.”我做错了什么?

[06:29:24] <Ilari> Burningdog:打开时可能TextWrangler会从外壳上脱落。这会导致 git 在编辑器打开时认为您已完成提交消息。

[06:30:10] <burningdog> Ilari:嗯……听起来很对。/usr/bin/edit将通过管道传输到它的任何内容发送到TextWranger. 也许我可以改变它...

[06:30:27] <Ilari> Burningdog:要么设置一些选项,告诉不要这样做。否则将提交消息写入文件,然后使用-F <file>提交。

[06:31:26] <burningdog>/usr/bin/editIlari:当用户输入提交消息时 ,git 调用的行为是预期的吗?

[06:32:09] <Ilari> 它用于确定要打开的编辑器的设置很少。

[06:32:54] <burningdog> 啊,以便在某些编辑器中打开默认文本。知道了。

[06:34:06] <Ilari> 燃烧狗:core.editor $GIT_EDITOR $VISUAL$EDITOR

[06:34:31] <burningdog> Ilari:我更改了我的 bash 配置文件以使用 pico 作为编辑器 - 修复了这个问题。谢谢你的帮助 :)

于 2010-03-26T09:22:03.163 回答
1

问题解决了,虽然我不太明白。

我不得不改变一些鸡蛋的选择。git.exe在某些情况下,它似乎没有找到正确的字符串。

我做了什么:

M-x customize-group <RET> egg <RET>

然后更改Egg git commandgit.exe 包含其完整路径

这有点奇怪,因为:

  • egg 可以使用 git 生成状态缓冲区
  • git 的路径在我的路径 envvar 中
  • 我相信“Aborting commit ...”消息来自 git。

在学习了如何调试 elisp 之后,我发现应该显示提交消息限制的标记都nil在 function 中egg-log-msg-commit

在其他地方,这些标记保存提交消息的字符索引,但不存在。

于 2010-03-29T09:51:38.727 回答
1

我只是尝试将 PsPad 用作不起作用的提交编辑器。它失败并显示相同的错误消息。这里的问题是git这样调用它的编辑器:

[Path]\PsPad.exe .git/COMMIT_EDITMSG

但是 PsPad 无法使用“/”解析该路径,这导致 PsPad 在存储库根文件夹而不是子文件夹“.git”中打开文件 COMMIT_EDITMSG。我不使用 emacs/egg,所以我无法重现您的问题,但也许这些信息也有帮助。

对于 PsPad 用户:我通过使用此包装脚本调用 PsPad 解决了我的问题:

"C:\Programme\PsPad editor\PsPad" $(echo $1 | sed 's/\//\\/')

该代码行包含在用作 git 编辑器的批处理文件中。它只是将所有 '/' 替换为 '\',这使得 PsPad 被这样调用:

[Path]\PsPad .git\COMMIT_EDITMSG
于 2010-11-15T13:35:15.060 回答
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 相同的主目录。

我个人在 emacs 配置中通过在启动期间更改 HOME 环境变量来解决这个问题,但这有一些副作用,例如,编辑你的 .emacs 文件。

于 2010-07-30T08:37:04.610 回答