Git烦人的换行符

帅旋
帅旋
关注
充电
发布于 2024-07-08 | 更新于 2025-04-05

最近把一些项目从gitlab上拉取下来之后,发现提交代码总是报这个错误:

1
2
git commit -m "feat(LT-814): 调整目录结构"
fatal: cannot run .git/hooks/commit-msg: No such file or directory

查看目录,文件确实存在:

1
2
3
4
ll .git/hooks
total 128
-rwxr-xr-x 1 arthinking staff 478B 17 May 13:36 applypatch-msg.sample
-rwxr-xr-x 1 arthinking staff 3.3K 17 May 14:50 commit-msg

排查过程

检查文件权限: 确保 commit-msg 文件具有执行权限。

1
chmod +x .git/hooks/commit-msg

检查 Shebang 行: 确保 commit-msg 钩子脚本的第一行是有效的 shebang(例如 #!/bin/sh#!/usr/bin/env bash)。例如:

1
2
#!/bin/sh
# 你的脚本内容

这个文件是maven插件自动安装的,看起来也没啥问题。

检查文件编码和行结尾: 有时文件编码或行结尾可能会导致问题。确保文件使用正确的编码并且是 Unix 风格的行结尾(LF)。

如果你使用 Vim,可以通过以下命令设置文件格式为 Unix:

1
2
:set ff=unix
:wq

当前用的是Mac,是基于Unix内核的系统,执行完以上操作,问题解决了。

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/faqs/devtools/git-lr.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。

请帅旋喝一杯咖啡

咖啡=电量,给帅旋充杯咖啡,他会满电写代码!

IT宅

关注公众号及时获取网站内容更新。