由于我正在尽职尽责地制作nice, descriptive commit message,我得到一个错误:
".git/COMMIT_EDITMSG" 81L, 2108C written
error: There was a problem with the editor 'vim'.
Please supply the message using either -m or -F option.
请注意,这通常是在:wq
之后。我检查.git/COMMIT_EDITMSG
文件,它没有任何变化。是否有另一个地方git保存此消息,以便我可以恢复它并尝试再次提交?人们有这个问题的经验,知道为什么它会发生在我身上吗?我没有问题写入其他文件和权限似乎是有序的。
答案 0 :(得分:6)
当你处于这种状态时,不确定COMMIT_EDITMSG上的git。如前所述,您可能会看到vim是否保存了它。但我的理解是vim的默认设置是删除备份,除非你明确告诉它保留它们。此外,如果您不希望将这些文件分散在整个目录中,则可以指定一个目录以放入它们(您可能必须先手动创建目录)。
尝试将以下两行添加到〜/ .vimrc文件中:
backup
backupdir=~/.vim/backup
手动创建〜/ .vim / backup目录,然后编辑文件并退出。您应该在备份目录的名称末尾看到该文件的副本带有“〜”。
另外,如果你像我一样懒惰,请使用“:x”退出vim而不是“:wq”。 “:x”同时执行写入和退出。
答案 1 :(得分:0)
我能够结合使用不同的解决方案并仅使用git来解决此问题(不取决于vim或其配置)。
在我的情况下,我还使用了带有子模块的存储库,这使其略有不同:
代替.git/.COMMIT_EDITMSG
邮件存储在.git/modules/{REPO}/COMMIT_EDITMSG
幸运的是,我们可以使用git rev-parse --git-dir
告诉我们。
我们可以使用git commit -eF [FILE]
从文件(-F
)中获取提交消息,并编辑消息(-e
)。
一起:
git commit -eF $(git rev-parse --git-dir)/COMMIT_EDITMSG
由于时间太长,我们还可以定义别名
git config --global alias.recommit '!git commit -eF $(git rev-parse --git-dir)/COMMIT_EDITMSG'
这样我们就可以这样称呼:
git recommit [... other commit arguments]
答案 2 :(得分:0)
我有一个同事遇到了同样的问题。也许 OP 正在打字
:Wq
代替
:wq
我建议退出
:x
为了避免这个问题。