git-revisions-syntax
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGit Revision Syntax
Git 修订版本引用语法
Single Commits
单个提交
| Syntax | Meaning |
|---|---|
| SHA prefix (≥4, unambiguous) |
| current commit |
| first parent |
| second parent (merge's other side) |
| walk N steps along first parent |
| chained: grandparent's merge sibling |
| 2 reflog entries ago |
| reflog by time |
| previously checked-out branch |
| upstream / push target |
| deref annotated tag to commit |
| newest commit whose msg matches regex |
^N~N| 语法 | 含义 |
|---|---|
| SHA前缀(≥4位,无歧义) |
| 当前提交 |
| 第一个父提交 |
| 第二个父提交(合并的另一侧) |
| 沿第一个父提交回溯N步 |
| 链式引用:祖父提交的合并兄弟提交 |
| 回溯2条引用日志记录 |
| 按时间筛选引用日志 |
| 之前检出的分支 |
| 上游分支 / 推送目标 |
| 将带注释的标签解引用到提交 |
| 提交消息匹配正则表达式的最新提交 |
^N~NRanges
范围选择
| Syntax | Meaning |
|---|---|
| in B, not A |
| symmetric diff (either but not both) |
| same as |
| in A or B, not C |
bash
git log origin/main..HEAD # unpushed
git log --left-right main...feature # side-marked
git log HEAD --not release/*| 语法 | 含义 |
|---|---|
| 属于B但不属于A的提交 |
| 对称差集(仅属于A或仅属于B的提交) |
| 与 |
| 属于A或B但不属于C的提交 |
bash
git log origin/main..HEAD # 查看未推送的提交
git log --left-right main...feature # 查看分支间对称差异并标记所属分支
git log HEAD --not release/* # 查看HEAD提交,排除所有release/*分支的提交Content-Based Selectors
基于内容的选择器
bash
git log -S"token" # commits where literal token count changed
git log -S"pat" --pickaxe-regex
git log -G"regex" # commits touching any matching line
git log -L :funcName:file.js # evolution of a function
git log -L 10,20:file.js # evolution of line range-S-Gbash
git log -S"token" # 查找字面量token出现次数变化的提交
git log -S"pat" --pickaxe-regex # 使用正则表达式匹配pickaxe模式
git log -G"regex" # 查找触及任何匹配正则表达式行的提交
git log -L :funcName:file.js # 查看函数funcName的演变历史
git log -L 10,20:file.js # 查看文件第10-20行的演变历史-S-GPlumbing
底层命令
bash
git rev-parse HEAD~3 # resolve to full SHA
git merge-base A B # nearest common ancestor
git name-rev <sha> # which branch/tag contains itbash
git rev-parse HEAD~3 # 解析为完整SHA值
git merge-base A B # 查找最近的共同祖先
git name-rev <sha> # 查找包含该SHA的分支/标签Pitfalls
注意事项
- Reflog selectors (,
@{N}) are local, expire (~90 days).@{time} - in zsh/PowerShell needs quoting.
HEAD^ - is empty if B is an ancestor of A — probably want
A..B.B..A
- 引用日志选择器(、
@{N})是本地的,会过期(约90天)。@{time} - 在zsh/PowerShell中使用需要加引号。
HEAD^ - 如果B是A的祖先,的结果为空——你可能需要
A..B。B..A