当我尝试使用
git commit
进行提交时,Sublime 文本编辑器确实打开了,我编写了提交消息并保存并关闭了编辑器,但更改并未提交。终端挂在git commit
。
我在网上搜索,发现有人有同样的问题,并且不假思索地应用了相同的修复程序。我运行命令:
git config --global core.editor "mate -w"
现在运行时出现新错误
git commit
:
mate -w: 1: mate -w: mate: 未找到 错误:编辑器“mate -w”有问题。 请使用 -m 或 -F 选项提供消息。
请帮忙。我对 git 和 Ubuntu 14.04 非常陌生。
Git 运行大量的外部位作为提交的一部分。虽然 Git 本身不太可能挂起,但它调用的任何外部部分都可能挂起,因此按照执行顺序:
pre-commit
$REPO_ROOT/.git/hooks/pre-commit
的脚本(它不是 .sample
文件!它必须是一个准确且唯一的名称,pre-commit
。)检查脚本的内容,看看它是否可能挂起。prepare-commit-msg
钩子。它就在 pre-commit
-m
,那么您的编辑器将启动,以便您可以输入消息。确保
commit-msg
-S
和 git commit
commit.gpgsign = true
时,才会运行此步骤。您可以使用 git config commit.gpgsign
检查后者。这也取决于您的 GPG 代理。查看:
如果您的代理使用 GUI 来获取您的密码,则该窗口不会像编辑器一样隐藏。代理本身没有挂起。我的问题有几个,一个基于 git commit
时,一切都会重新开始;这可能对你的悬挂有帮助,也可能没有帮助。post-commit
请注意,我仅
merge
也会创建提交,并且它遵循大致相同的顺序,但有 一些不同的钩子。
此外,如果您的存储库特别大,Git 本身可能需要一段时间——每次提交本质上都是给定时间其中所有文件的快照。如果您明智地使用.gitignore
s忽略诸如构建的可执行文件之类的事情,并just
跟踪 Git 存储库中的源代码,它会很有帮助。请注意,这会破坏一些编辑器:Visual Studio(原始版本,而不是 VS Code)在此类事情上尤其存在一些问题。对我来说,这是一个突然退出的 gpg 签名会话,我不得不用 终止 gpg 会话
您可能有一个执行长时间运行任务的预提交挂钩。
.git/hooks/pre-commit
看看它做了什么。
如果您使用
git commit
签署提交且 配置错误
或存在其他问题,也可能会发生
gpg-agent
无限期挂起。在强化系统上,使用 pinentry-program /usr/bin/pinentry
中的 hidepid 设置 ~/.gnupg/gpg-agent.conf
(当前默认为
gtk2
pinentry 对话框)可以解决 tty
对话框的问题。使用 nano
作为 ~/.gitconfig
中的编辑器比使用桌面编辑器问题要少得多:
[core]
editor = nano
pager = less -FXRS
我使用 sublime 作为提交消息,我发现问题是 sublime 窗口正在打开,但没有出现在前台(通常情况下)。简单的解决方案,但因为它不能像往常一样工作,所以看起来像是挂了。
您可以在这里找到详细的解决方案:
由于 GPG 锁定问题导致 Git Commit Freeze(解决方案)