自几天前以来,每次我在存储库中启动Git GUI时,它都会显示此可怕的错误消息,并在单击OK后退出:
prepare-commit-msg hook failed:
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x260000, State 0x10000
C:\Program Files (x86)\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
You must correct the above errors before committing.
仅在Git GUI中发生,并且仅在存储库中(旧的或新创建的)发生。 Git Bash中的常见命令(包括提交)可以正常工作。
卸载并使用较新的软件包重新安装(仅次要版本更改)没有解决问题。无论是旧存储库还是新创建的存储库,都仍然会发生这种情况。
在干净的机器上,这个问题不会重现,所以我想这是我盒子上的东西,但是我不记得安装了什么有趣的东西。我确实记得很长一段时间后关闭了我的盒子,所以也许某些Windows Update可能触发了此操作-这也可以解释为什么另一台计算机没有受到影响-自上次Win更新以来已有2-3个月了。
任何想法如何阐明这一点? (因为我只能在单台机器上看到它,所以我不希望在不知道这不是我/其他应用程序的错误之前将其提交给官方跟踪器...)
<< [Update在第一条评论之后:
如果删除或重命名该钩子脚本,它可以工作吗?
很有趣,但是钩子脚本实际上根本不存在(没有钩子脚本当前-.git \ hooks中只有* .sample文件)。甚至没有其他地方(git程序目录等)
跟踪它,让您知道它运行了什么命令-从git-bash运行git gui --trace
可悲的是,这不会向外壳输出任何内容。行为是相同的。
也许在其中获得gdb。
我尝试过,但是gdb没有输出任何有用的信息。但是,我没有任何经验使用GDB,我可能做错了。我得到了MinGW's gdb,从命令中运行了它提示以git.exe作为参数,然后运行run gui
。 gdb没有输出任何东西有趣:
(gdb) run gui
Starting program: C:\Program Files (x86)\Git\bin\git.exe gu
[New Thread 8264.0x1ce4]
[New Thread 8264.0x394]
[Inferior 1 (process 8264) exited with code 01]
(gdb)
但是我几乎可以肯定我做错了,所以建议不只欢迎:)
请确保您没有安装cygwin或至少没有在您的计算机中安装cygwin完全是PATH
我确实安装了cygwin(就像往常一样,在git崩溃之前)。从Cygwin我只在路径中有一些* .bat启动器和一些* .dll文件,但是我已经检查了ProcMon,它不会碰到它们,即使我将它们从路径中删除,我仍然会得到同样的崩溃。
也许可以帮助其他人解决该错误。
c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll
msys-1.0.dll
驱动器上搜索所有C:\
,然后让Git使用的第一个出现。就我而言,我只是改变了顺序: