Git钩子目录创建后Vim无法写入文件E212错误求助
解决Git Hooks创建时的E212错误
嘿,我来帮你搞定这个Git钩子的问题!你现在遇到的E212: Can't open file for writing错误,核心原因是搞错了Git Hooks的文件结构——Git的钩子文件是直接放在.git/hooks目录下的,不需要创建post-commit.sample文件夹,.sample只是Git自带的示例文件的后缀而已。
咱们一步步来修正:
1. 先清理错误创建的文件夹
首先把你误建的post-commit.sample文件夹删掉,避免干扰:
rm -rf .git/hooks/post-commit.sample
2. 正确创建post-commit钩子文件
有两种简单的方式,选你顺手的来:
方式一:从零创建钩子文件
- 先在
.git/hooks下创建空的post-commit文件:touch .git/hooks/post-commit - 关键步骤:给文件添加可执行权限(Git钩子必须是可执行文件才能生效,新手很容易漏掉这一步):
chmod +x .git/hooks/post-commit - 现在就可以正常编辑文件了:
写入你需要的内容,比如:vim .git/hooks/post-commitecho "本次提交已完成!"
方式二:利用Git自带的示例文件
Git默认在.git/hooks目录下会有一堆.sample结尾的示例钩子文件,你可以直接复制修改:
- 复制示例文件(如果存在的话):
cp .git/hooks/post-commit.sample .git/hooks/post-commit - 同样要添加可执行权限:
chmod +x .git/hooks/post-commit - 编辑文件,删掉不需要的注释,添加你自己的逻辑即可。
为什么之前会出错?
你创建了post-commit.sample文件夹,然后试图在里面创建post-commit文件,大概率是因为这个文件夹的权限设置问题(比如创建时没有写权限),但更重要的是这个结构完全不符合Git Hooks的要求——Git只会读取.git/hooks目录下直接存在的、不带.sample后缀的可执行文件作为钩子。
内容的提问来源于stack exchange,提问作者picasso13
相关产品推荐
相关产品推荐

