Git提交消息异常丢失的解决求助
这种情况真的超闹心!明明输入了完整的提交信息,结果git log里只显示半截的feat(custom):,完全看不到自己写的内容,太影响后续的提交追溯了。结合你的环境(Mac Sonoma 14.4.1 + ZSH)和描述(没更新Git、环境也没改动),我给你整理几个大概率能解决的排查方向:
检查Git提交模板配置
有可能你不小心设置了全局或仓库级的提交模板,模板里只有feat(custom):这行内容,导致覆盖了你用-m传入的消息。先运行这个命令看看有没有相关配置:git config --list | grep commit.template如果返回了某个文件路径,打开那个文件看看内容是不是只有
feat(custom):。要是的话,要么删除这个配置(运行git config --unset commit.template,全局配置加--global参数),要么修改模板内容加上可编辑的提示。排查Git钩子脚本
Git的钩子脚本(比如prepare-commit-msg或commit-msg)会在提交过程中自动修改或替换提交信息。去你的仓库根目录下的.git/hooks文件夹看看,有没有这两个脚本文件。如果有的话,先把它们重命名备份(比如mv .git/hooks/prepare-commit-msg .git/hooks/prepare-commit-msg.bak),然后重新提交一个测试内容,看看消息能不能正常显示。要是恢复正常了,那就是钩子脚本里的逻辑把你的消息替换掉了,需要修改脚本内容。检查ZSH的Git别名/自定义函数
有时候我们会给Git命令设置别名,可能不小心把git commit设置成了自动带固定前缀的命令。运行下面的命令看看有没有异常别名:alias | grep git如果看到类似
alias git commit='git commit -m "feat(custom):"'这种奇怪的配置,直接删除对应的别名设置(一般在~/.zshrc或~/.bashrc里),然后重启终端或者执行source ~/.zshrc让配置生效。尝试用编辑器提交测试
暂时不用-m参数,直接运行git commit,这时候会弹出默认编辑器(比如Vim或VS Code),在里面输入完整的提交消息,保存退出后再看git log。如果这样消息能正常显示,那大概率是-m参数的处理被某个配置干扰了,再回到上面的步骤排查。
要是上面的方法都试过还是不行,可以先看看你的Git版本(git --version),虽然你说没更新,但偶尔旧版本的Git也可能有奇怪的bug,不过这种概率比较低。
备注:内容来源于stack exchange,提问作者user254694

