【问题标题】:Git init error fatal: cannot copy hooks/post-commit.sample, No such file or directoryGit init 错误致命:无法复制 hooks/post-commit.sample,没有这样的文件或目录
【发布时间】:2014-06-12 14:47:37
【问题描述】:

今天我发现了一个关于 Git 的奇怪问题。在我们的三台构建代理机器上,git init 后出现以下错误:

致命:无法将 'C:\Program Files (x86)\Git/share/git-core/templates/hooks/post-commit.sample' 复制到 'C:/MyRepo/.git/hooks/post-commit .sample': 没有这样的文件或目录

我检查了Program Files中的文件是否存在,并且所有的文件权限都是正确的。

然后我从 C:\Program Files (x86)\Git/share/git-core/templates/hooks 文件夹中删除了所有示例文件,在git init 之后又出现错误 p>

错误:无法打开 C:/MyRepo/.git/HEAD.lock 进行写入

我尝试重新安装 git,但这没有帮助。

但是在我重新启动机器后问题就消失了。

当我重新启动其他两台机器时,问题也消失了,没有任何其他操作。

所以问题是为什么会突然发生这种情况以及将来如何防止这种情况发生?

UPD:还有一种症状。也许这有助于确定问题。

我尝试在有问题的驱动器上运行 chkdsk,但我得到了

The type of the filesystem is RAW.
CHKDSK is not available for RAW drives.

重启后它再次显示为 NTFS...

【问题讨论】:

    标签: git


    【解决方案1】:

    消息“文件系统的类型是 RAW”。令人担忧,并且可能表明某种磁盘故障,如“CHKDSK: "RAW filesystem" message”中所述

    有时,卷会以某种方式出现故障,从而变成 RAW。

    在大多数情况下,故障与突然重启有关(每次电源故障或 STOP 错误)。

    可能有多种原因:分区表、LDM 数据库或卷引导扇区损坏,或者(在 NTFS 卷上)当 MFT 和 MFT 镜像中的某些记录损坏而无法识别时。

    您可以尝试修复 MTF(如 described here,使用 TestDisk),但您可以先尝试将您的 repo 放在另一个分区/磁盘上,看看您的构建代理是否正常运行那么正确。

    另请参阅“CHKDSK is not available for RAW drives”或“On a failing hard drive, I am able to view data but unable to copy it - why?”,了解类似说明。


    就像在this question 中一样,确保之前没有设置环境变量 GIT_DIR,您的构建代理(Jenkins?Hudson?TeamCity?)会在执行git init 时获取。

    在 git init 之前系统地取消设置 GIT_DIR 将确保它尝试在它应该初始化的地方初始化一个 repo。

    【讨论】:

    • 嗯。这是一个有趣的想法。该问题刚刚发生在另一个构建代理上。我检查了 GIT_DIR 变量没有设置所以不,那是别的......
    • @mnaoumov 它可能没有在主 shell 会话中设置,但可以在作业 shell 中设置。我仍然会确保这项工作从取消设置 GIT_DIR 开始,只是为了确定。
    • 我刚刚登录到服务器并尝试在新文件夹上执行 git init。它因我之前描述的错误而失败。但 GIT_DIR 至少在我登录的 shell 会话中未设置...
    • @mnaoumov 它是什么操作系统?你用的是什么版本的git?
    • Windows Server 2008 R2 企业版。 git 版本 1.8.3.msysgit.0
    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 2019-07-11
    • 2015-03-23
    • 2017-05-09
    • 2021-05-15
    • 2014-10-31
    • 2022-01-11
    • 2021-09-19
    相关资源
    最近更新 更多