361 字
2 分钟
git rev-parse 是什么
git rev-parse 是 Git 的“底层 plumbing 命令”,用来把各种 Git 里的“可读写法”解析成 Git 内部真正使用的值(最常见是 commit/object 的 SHA、分支引用、路径等),也常用来获取仓库/工作区相关信息。它本身不改仓库状态,主要用于脚本和调试。
常见用法:
1) 把引用解析成 commit SHA
- 当前
HEAD指向的提交:
git rev-parse HEAD- 某分支/标签对应的提交:
git rev-parse maingit rev-parse v1.2.3- 相对引用:
git rev-parse HEAD~1git rev-parse HEAD^2) 判断是否在 Git 仓库内、拿到 .git 目录
- 是否在工作树里:
git rev-parse --is-inside-work-tree.git目录路径(可能是实际目录或指向 gitdir 的文件解析结果):
git rev-parse --git-dir- 仓库顶层目录(worktree root):
git rev-parse --show-toplevel3) 解析引用本身(ref 名称 / 上游等)
HEAD实际指向哪个分支(若是 detached HEAD 会失败或无输出):
git rev-parse --abbrev-ref HEAD- 当前分支名:
git rev-parse --abbrev-ref HEAD- 当前分支的上游(tracking):
git rev-parse --abbrev-ref --symbolic-full-name @{u}4) 解析成对象类型(commit/tree/blob/tag)
- 看某个名字对应的对象类型:
git cat-file -t "$(git rev-parse HEAD)"(rev-parse负责解析出对象 ID,cat-file负责看类型。)
5) 脚本里安全用法
- 失败时直接退出:
git rev-parse --verify HEAD- 输出短 SHA:
git rev-parse --short HEAD一句话:rev-parse 就是“把你写的 HEAD / main / HEAD~3 / refs/... 等,解析成 Git 内部可操作的确定对象或路径”,脚本里用得非常多。
git rev-parse 是什么
https://blog.lpkt.cn/posts/git-rev-parse/