You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行生成AUTHORS文件的Bash脚本后调用git log报错:当前master分支无提交记录

解决Git log报错与脚本修复方案

首先,咱们拆解下问题的根源:

报错核心原因

你看到的 "fatal: your current branch 'master' does not have any commits yet" 是因为你的Git仓库还没有任何提交记录——git log 只能输出已存在的提交日志,空仓库里它自然会抛出这个错误。

除此之外,你的脚本还有一个关键逻辑问题:你用了 echo git log --format='%aN <%aE>',这会把git log...这个命令本身的字符串写到AUTHORS文件里,而不是执行这个命令并输出实际的作者列表!

分步解决方案

1. 先给仓库创建首次提交(必须步骤)

如果这是个新仓库,先执行以下命令生成第一个提交:

git add .
git commit -m "Initial commit: Add project base files"

2. 修复脚本的输出逻辑

把脚本里的echo去掉,直接执行git log命令,这样才能把作者信息正确输出到AUTHORS文件中。修改后的完整脚本:

#!/usr/bin/env bash
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")/.."
{
cat <<- 'EOH'
# Project Contributors
EOH
git log --format='%aN <%aE>' | LC_ALL=C.UTF-8 sort -uf
} > AUTHORS

3. 可选:兼容空仓库场景

如果你希望脚本在仓库没有提交时也能正常运行(不报错,且生成带提示的AUTHORS文件),可以添加提交检查逻辑:

#!/usr/bin/env bash
cd "$(dirname "$(readlink -f "$BASH_SOURCE")")/.."
{
cat <<- 'EOH'
# Project Contributors
EOH
# 检查仓库是否存在提交记录
if git rev-parse --verify HEAD >/dev/null 2>&1; then
    git log --format='%aN <%aE>' | LC_ALL=C.UTF-8 sort -uf
else
    echo "⚠️ No commits found - make your first commit to populate this list"
fi
} > AUTHORS

这里git rev-parse --verify HEAD用来检测是否有提交,>/dev/null 2>&1是为了隐藏这个检查命令的输出,避免污染AUTHORS文件的内容。

最后确认脚本权限

如果还没给脚本添加可执行权限,执行:

chmod +x your-script-name.sh

内容的提问来源于stack exchange,提问作者ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 06:42:45