Git命令速查表

下一个

Git共有约150个子命令,其中部分命令名称极为相似,例如resetrestorecheckoutswitchrmrestore --staged。本备忘单按使用场景对实际输入的命令进行分类:日常工作流程、分支操作、错误撤销以及代码暂存。选择对应类别后即可复制相关内容。

如何使用该速查表

  1. 1

    选择一个主题

    每日操作、分支处理、撤销操作或存档操作,每种操作都对应不同的思维模式。

  2. 2

    扫描区块

    每行均为完整且可执行的命令,除非特别标注,否则角括号内均不包含占位符。

  3. 3

    复制你需要的那条

    粘贴到终端中,调整分支名称或提交 SHA 后运行即可。

为何命令仍会让经验丰富的用户感到困惑

Git 的 porcelain 命令层是逐步累加而成的。checkout 被同时赋予了“切换分支”和“恢复文件”两种职责;reset 则处于“丢弃改动”与“移动分支指针”之间。自 Git 2.23 起,出现了更清晰的动词:

旧版 新版(更清晰)
git checkout branch git switch branch
git checkout -b new git switch -c new
git checkout -- file git restore file
git checkout --staged file git restore --staged file

安全撤销操作阶梯

  1. 恢复一个文件git restore path/to/file(未提交阶段)或 git restore --staged path/to/file(已提交但未确认)。
  2. 撤销最近一次提交并保留更改git reset --soft HEAD~1
  3. 撤销最近一次提交并放弃所有更改git reset --hard HEAD~1(操作具有破坏性;请确认无未提交的工作内容)。
  4. 撤销共享提交git revert <sha>,创建一个新的提交以抵消之前的提交;对已推送的历史记录无影响。

stash 使用规范

  • 始终带上说明信息再 stash:git stash push -m "wip: 正在接入 API"
  • 在 pop 之前先用 git stash list 查看 stash 列表,无名的 stash 会很快堆积。
  • git stash pop 应用后删除;git stash apply 应用后保留。

恢复

硬重置后丢失了提交记录?该记录很可能仍存在于恢复日志中。运行 git reflog 可查看过去 90 天内的所有 HEAD 移动记录,同时运行 git reset --hard <sha> 可将系统恢复至正常状态。

常见问题

自Git 2.23(2019年8月)版本起,该项目将原本功能重叠的checkout命令拆分为两个独立命令:switch用于切换分支,restore用于修改文件。这两个命令仍保留以确保向后兼容性,但在查阅命令历史记录时更便于阅读。

reset 移动分支指针(可选地同时移动工作树)。revert 创建新的提交操作以撤销之前的提交,在共享分支上操作安全。checkout/restore 在不重写历史记录的情况下修改工作树中的文件。

使用 git revert <sha> 添加补偿性提交并推送。除非团队明确同意,否则避免在共享分支上同时使用 git reset --hardgit push --force

命令是页面中显示的静态文本。您选择的主题仅会发送到服务器以显示对应的命令,并在两步之间跳转时包含在页面链接中。该主题不会被存储或记录。

相关工具

此工具还提供其他语言版本