git commit命令无限期挂起

时间:2015-02-02 10:39:20

标签: git git-commit

当我尝试使用git commit进行提交时,sublime文本编辑器确实打开了,我编写了提交消息并保存并关闭了编辑器,但更改未提交。终端在git commit处被绞死。

我在网上搜索并发现有同样问题的人并且在没有考虑任何问题的情况下应用了相同的修复程序。我跑了命令:

git config --global core.editor "mate -w" 

现在我运行git commit时出现了新错误:

  

mate -w:1:mate -w:mate:not found   错误:编辑器出现问题' mate -w'。   请使用-m或-F选项提供消息。

请帮忙。我是git并使用Ubuntu 14.04的新手。

3 个答案:

答案 0 :(得分:6)

可能是你有一个执行长期任务的预提交钩子。

检查.git/hooks/pre-commit并查看其功能。

答案 1 :(得分:2)

我使用sublime来提交我的提交消息,我发现问题是一个崇高的窗口正在打开但没有出现在前台(就像通常那样)。简单的解决方案,但因为它没有像往常一样工作,看起来像是悬挂。

答案 2 :(得分:0)

Git运行外部位的 lot 作为提交的一部分。虽然Git本身不太可能挂起,但它调用的任何外部部件都可以挂起,因此按执行顺序:

  1. pre-commit挂钩。这是$REPO_ROOT/.git/hooks/pre-commit处的脚本(它不是{strong>不是 .sample文件!它必须是一个唯一且仅命名为pre-commit的文件。)检查内容脚本是否挂起。
  2. prepare-commit-msg挂钩。它就位于pre-commit钩子旁边,该钩子的名称与您期望的一样。一样。
  3. 如果您未通过-m,则编辑器将启动,以便您输入消息。确保
    • 该窗口没有以某种方式隐藏(屏幕外,最小化,在其他窗口后面)
    • 编辑器本身没有挂起
  4. commit-msg挂钩。与其他挂钩相同。
  5. 提交签名。仅当您为-S指定git commit或您有commit.gpgsign = true时,此步骤才运行。您可以使用git config commit.gpgsign检查后者。这也取决于您的GPG代理。
    • 如果您的代理使用GUI获取密码,则不会像编辑器一样隐藏窗口。
    • 代理本身未挂起。我遇到了几个问题,一个基于curses的问题挂了。
    • 您可以随时杀死您的GPG代理。它所做的只是短暂地保存您的密码,因此您无需每次都输入密码。再次git commit时,它会重新开始;这可能会也可能不会帮助您上吊。
  6. post-commit钩子。

请注意,我仅 解决了手动创建提交的问题。 merge也将创建提交,并且使用some different hooks基本上遵循相同的顺序。