Git编辑器提交错误

时间:2018-05-05 01:59:29

标签: git sublimetext

我将core.editor设置为Sublime Text。但是,我的所有提交都会自动失败,并且我得到以下内容:

  

由于空提交消息而中止提交。

即使它确实打开了Sublime Text。我还需要做些什么来防止这种情况,或者Sublime会不会对此有用吗?

注意,我是从终端做的。

2 个答案:

答案 0 :(得分:4)

问题是Sublime Text命令行工具默认告诉Sublime Text GUI打开文件,然后立即退出,即使GUI仍然打开文件。但是,有一个选项可以告诉命令行工具等待GUI中的文件关闭。该选项为--wait(简称-w)。所以如果我试试这个:

: $; git config core.editor subl
: $; git commit

...我得到以下内容 - 第一行显示短暂然后被删除并替换为第二行:

hint: Waiting for your editor to close the file... 
Aborting commit due to empty commit message.

您可能会或可能不会看到第一行,因为这一切都在Sublime Text GUI变得可见的同时发生,并打开COMMIT_MESSAGE文件。当你回到航站楼时,你只会看到第二行。

但是如果我添加等待选项,它就可以了。所以我改变了编辑器:

: $; git config core.editor 'subl -w'

然后,如果我执行git commit,并在不关闭COMMIT_MESSAGE文件的情况下从Sublime Text切换到终端,我看到:

: $; git commit
hint: Waiting for your editor to close the file... 

然后,如果我回去关闭文件(在写入一些文本并保存之后),我会回来看看:

: $; git commit
[master 79d5a7b] Commit message I typed in Sublime Text GUI.
 1 file changed, 1 insertion(+), 1 deletion(-)

答案 1 :(得分:1)

如果您在不更改消息的情况下退出,则应注意您实际上必须在中键入

同样的事情发生在我身上(gedit)如果我实际上没有在它开头的注释行之上输入某些内容(合并是可以的,因为它们会自动添加非注释“合并到b“ - 样文本。”

但是,如果您的编辑器实际上正在启动但是git commit在打开时继续那么编辑器的启动方式就会出现问题。

Sublime Text存在一个已知问题,即启动它的程序无法始终正确识别它仍在运行。我认为可能是因为命令行工具只是告诉GUI程序打开文件(如果需要,首先启动它),然后命令行工具将退出。

因此,git将假定它已完成,并且由于该文件尚未更改,因此它会为您提供该错误消息。

在解决该问题方面,我认为Sublime Text添加了-w标志,以确保不会发生这种情况。

无论如何,我更喜欢显式在命令行上输入消息,例如:

git commit -m 'fixed my earlier screw-up'

所以我不必担心编辑等。