执行生成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
相关产品推荐
相关产品推荐

