开发者必备 Git 命令参考
从克隆到变基,再到 force-push 灾难恢复——常用 Git 命令、可复制调用方式与一句话释义。

为什么重要
新人误对主干执行 git push --force,抹掉昨天的提交。恢复只需 30 秒的 git reflog——前提是你知道它存在。Git 语法苛刻但安全网不少;多数人只会 clone、commit、push,只因从未建立更完整的命令词汇。按场景分类的备忘单是团队性价比极高的参考资料。
三个真实场景
git rebase -i main,pick / squash。参考里列出交互式变基的动词说明。
主干历史干净
git bisect start good bad,逐步标记好坏,Git 二分直到孤立问题提交。
7 次提交内锁定元凶
git reflog 记录每次 HEAD 移动;git reset --hard <reflog-id> 可恢复。
化险为夷
操作指南 —— 使用参考页
打开 Git 命令参考。
按工作流阶段浏览
初始化、日常提交、分支管理、与远端同步、改写历史、调试、恢复。
搜索动词
输入「rebase」「stash」「cherry-pick」,匹配命令会带出解释。
复制标准写法
每条含一行「实际敲什么」与带选项的多行变体。
阅读陷阱提示
许多条目会警告
--force语义、pull --rebase与默认合并的差异等。收藏常用分类
例如「改写历史」,便于高压时刻快速翻出。
目标
开功能分支,保存 WIP,与 main 同步,
收尾,推送 PR。命令
git checkout -b feature/payment-retry
# work, work, work
git add . && git commit -m "WIP retry logic"
git fetch origin
git rebase origin/main
# fix any conflicts, then:
git push -u origin feature/payment-retry现象
你执行了 `git reset --hard HEAD~5`
最近 5 个提交似乎不见了。修复
git reflog # find the SHA before the reset
git reset --hard <SHA> # restore HEAD to it
进阶技巧
- 用
git switch与git restore分担checkout的职责:switch管分支,restore管文件。语义更清晰,误操作更少。 git log --first-parent折叠合并噪声,只看主干历史。- 设置
pull.rebase = true,让默认git pull走变基——减少功能分支上「合并合并合并」提交。 - 最后一笔用
git commit --amend;更老的提交用git rebase -i。已推到共享分支后不要再 amend。
常见误区
常见误区
force-push 抹掉队友工作
用 git push --force-with-lease 代替裸 --force:若远端在你上次 fetch 之后有更新会中止。务必默认用它;--force 留给你独占的分支。
常见误区
误提交密钥
用 git filter-repo(或 BFG Repo-Cleaner)重写历史移除文件,并立即轮换已泄露的密钥。
常见误区
写 `git rebase main` 而非 `git rebase origin/main`
可能对陈旧的本地 main 变基。应先 git fetch,或对明确的 origin/main 引用变基。
何时不适合用本参考
- 可视化分支图——Lazygit、GitKraken、VS Code Git Graph 等 GUI 往往比
git log --graph更快。 - 代码评审——
git diff只看差异;GitHub/GitLab/Gerrit 才管评论与审批。 - 大二进制文件治理——应用 Git LFS 或
git annex,而非仅靠原生 Git。
常见问题
什么是「快进」(fast-forward)?
快进合并沿一条无分叉的提交历史移动分支指针,无需生成合并提交。常见于目标分支在你开分支后尚未前进。
何时该用 `git stash`?
仅适合真正一次性的 WIP。正经工作更倾向在临时分支上打 wip 提交——stash 容易被遗忘而丢失。
reflog 会永久保留吗?
不会。普通条目默认约 90 天过期,不可达条目约 30 天。之后只能靠 git fsck --lost-found 等碰碰运气。
下一步
- 配合 Linux 命令参考 使用 shell 工具(grep、find、awk)。
- 用 URL 解析 检查远端 URL 与端口。
git push返回的 HTTP 错误(401、403、502)对照 HTTP 状态参考。