如何获取当前提交的哈希值
获取当前提交哈希:git rev-parse HEAD(完整 40 位);短哈希用 git rev-parse --short HEAD。脚本中常用它做版本标记、构建号、镜像标签。
git rev-parse HEAD 输出当前提交的完整 40 位 SHA 哈希。要短哈希(前 7 位)用 git rev-parse --short HEAD。
用法
git rev-parse HEAD # a1b2c3d4e5f6...(完整)
git rev-parse --short HEAD # a1b2c3d(短哈希)
git log -1 --format=%H # 等价:完整哈希
git log -1 --format=%h # 等价:短哈希
典型用途
# 构建产物打版本标记
VERSION=$(git rev-parse --short HEAD)
docker build -t myapp:$VERSION .
# 在应用里暴露版本端点
echo "{"commit": "$(git rev-parse HEAD)"}" > version.json
相关引用
| 引用 | 含义 |
|---|---|
HEAD |
当前提交 |
HEAD^ |
上一个提交 |
HEAD~3 |
往上数第 3 个提交 |
@{u} |
上游分支指向的提交 |
origin/main |
远程跟踪引用 |
git rev-parse 可以把这些引用全部解析成哈希:git rev-parse HEAD~3。
常见问题(FAQ)
Q:游离 HEAD 状态下拿到什么?
拿到当前检出的那个提交的哈希——detached HEAD 只是 HEAD 直接指向提交而非分支,哈希获取不受影响。
Q:仓库还没有任何提交时会怎样?
报错 "ambiguous argument 'HEAD'"。脚本里用 git rev-parse HEAD 2>/dev/null || echo "no commits" 容错。
Q:短哈希会重复吗?
理论上可能,实践中 Git 会自动延长到不冲突的最短长度。跨仓库交换信息时用完整哈希保险。