git hook - 在新的 repo 上获取分支名称

githook - get branchname on a new repo

我正在编写一个 prepare-commit-msg 挂钩,它将分支名称附加到提交消息中。我正在使用这一行来获取分支名称

  local current_branch=$(git rev-parse --abbrev-ref HEAD)

问题是如果不存在先前的提交(当 repo 刚刚初始化时)命令失败并显示以下错误消息

git rev-parse --abbrev-ref HEAD
HEAD
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.

是否有更好的方法来获取分支名称,或抑制警告/错误?

git symbolic-ref --short HEAD

https://git-scm.com/docs/git-symbolic-ref

这种情况非常罕见,几乎不值得担心。你可以只添加一个默认值,并抑制错误

$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "default branch")