Notes on git's error messages
概述
Julia Evans 分析了 Git 常见错误消息为什么让人困惑,以及她面对这些错误时的处理策略。
核心要点
改进错误消息的难点
- 很难判断一个新消息是否真的更好
- 这类工作通常没有资金支持
- 错误消息需要被翻译成 19 种语言
常见困惑的错误消息
| 错误类型 | 问题 | 解决策略 |
|---|---|---|
| git push 拒绝 (non-fast-forward) | 无法区分"behind"和"diverged"两种情况 | 运行 git status 查看状态 |
| git pull 时的分支选项 | 选项太多,难以选择 | 通常用 git pull --rebase |
| git checkout 不存在的分支 | 说的是"path"而你想要的是"branch" | 理解为"branch 不存在" |
| git switch 无效引用 | 说"invalid reference"而非"invalid branch" | 把"reference"理解为"branch" |
| detached HEAD | 很多人对此感到困惑 | 依赖 shell prompt 提示 |
| rebase 过程中的文件冲突 | 不知道 HEAD 指的是哪个分支 | 记住: rebase 时 HEAD 是"你的分支" |
| merge 冲突中的 "deleted by them" | "them" 取决于是 merge 还是 rebase | 尝试记住做了什么操作 |
实用技巧
- git status: 几乎总是第一步
- git log origin/main: 查看分叉的 commits
- shell prompt: 显示当前分支和 rebase 状态很有帮助
- git clean -i: 交互式清理未跟踪文件