当我尝试使用git commit
提交时,sublime文本编辑器确实打开了,我写了提交消息,保存并关闭了编辑器,但修改没有被提交。终端在git commit
挂起。
我搜索了一下网络,发现有人有同样的问题,并应用了相同的修复没有想任何事情。我运行命令:
git config --global core.editor "mate -w"
现在当我运行git commit
时,我有一个新的错误:
交配-w:1:交配-w:匹配:未找到错误:编辑器“mate -w”有问题。请使用-m或-F选项提供消息。
我对git和Ubuntu 14.04都很陌生。
5条答案
按热度按时间2q5ifsrm1#
它可能是一个执行长时间运行任务的预提交钩子。
检查
.git/hooks/pre-commit
,看看它做了什么。webghufk2#
作为提交的一部分,Git运行了大量的外部位。虽然Git本身不太可能挂起,但它调用的任何外部部件都可能挂起,因此按照执行顺序:
pre-commit
钩子。这是$REPO_ROOT/.git/hooks/pre-commit
中的一个脚本(它是而不是.sample
文件!它必须是一个名称准确且唯一的pre-commit
文件。)检查脚本的内容以查看它是否可能挂起。prepare-commit-msg
钩子。它就在pre-commit
钩子旁边,名字和你想的一样。同样的事情。-m
,那么您的编辑器将启动,以便您可以输入消息。commit-msg
钩子和其他钩子一样。git commit
指定-S
,或者您具有commit.gpgsign = true
时运行。您可以使用git config commit.gpgsign
检查后者。这也取决于您的GPG代理。检查:git commit
时,它会重新开始;这对你的绞刑可能有帮助也可能没有帮助。post-commit
钩子。请注意,我 * 只 * 提到了手动创建提交。
merge
也会创建提交,它遵循与some different hooks大致相同的顺序。此外,如果你的仓库特别大,Git本身也会花上一段时间--每次提交基本上是给定时间内所有文件的快照。如果你明智地使用
.gitignore
s来忽略构建的可执行文件,而 * 只是 * 跟踪Git仓库中的源代码,它会有很大帮助。注意,这会破坏一些编辑器:VisualStudio(原版,而不是VS代码)在这类事情上尤其有一些问题。jucafojl3#
git commit
无限期挂起也可能发生,如果您使用gpg
签署提交&gpg-agent
配置错误或有其他问题。在使用hidepid的加固系统上,在
~/.gnupg/gpg-agent.conf
中设置pinentry-program /usr/bin/pinentry
(当前默认为gtk2
pinentry对话框)可解决tty
对话框的问题。在
~/.gitconfig
中使用nano
作为编辑器比使用桌面编辑器问题要少得多:yiytaume4#
我用sublime来处理提交信息,我发现问题是sublime窗口打开了,但没有出现在前台(通常是这样的)。简单的解决方案,但因为它没有正常工作,看起来像是挂着的。
vh0rcniy5#
对我来说,这是一个gpg签名会话突然退出,我不得不杀死gpg会话与