type
Post
status
Published
date
Feb 1, 2026
slug
git-cheatsheet
summary
Git常用命令包括查看状态、提交历史、分支管理、远程操作、合并与变基、撤销操作及暂存等。
tags
Git
category
速查
icon
fa-brands fa-git-alt
password

基础与查看

git status —— 查看工作区修改状态。
  • s:简略显示,看起来更清爽。
 
git show <SHA> —— 显示某个 Git 对象(提交、标签等)的详细信息。
 
git log —— 查看提交历史。
  • --oneline --graph:单行 + 图形化显示。
  • branchB..branchA:查看在 A 中但不在 B 中的提交。
  • -follow [file]:查看特定文件的提交历史(即使文件被重命名过也能追踪)。
 
git diff —— 查看代码差异。
  • (不加参数):查看 工作区 vs 暂存区 的差异。
  • -staged:查看 暂存区 vs 版本库 的差异。
  • branchB...branchA:查看 A 和 B 分支内容的差异。

分支与标签

git branch —— 列出分支。
  • av:列出所有分支(包含本地和远程),并显示详细信息。
  • d <name>:删除指定分支。
 
git checkout <target> —— 切换分支 或 恢复文件。
  • b <new_branch>:创建并切换到新分支。
  • b <branch> origin/<branch>:基于远程分支创建并切换到本地分支。
  • <file>:丢弃工作区对该文件的修改。
 
git tag <tag_name> —— 给当前提交打上标签。

提交

git add <files> —— 将修改添加到暂存区。
  • p:交互式添加。可以一段一段代码地选择是否添加。
 
git commit —— 提交暂存区内容。
  • m "msg":直接附带说明。
  • -amend:追加(修订)上一次提交。

远程操作

git remote —— 管理远程仓库。
  • v:显示远程仓库的名称和 URL。
  • add <alias> <url>:添加一个新的远程仓库别名(如 origin)。
  • rm <alias>:删除远程仓库关联。
  • set-url <alias> <url>:修改远程仓库的 URL。
 
git fetch <alias> —— 从远程获取所有更新,但不合并到工作区。
 
git pull —— 拉取远程代码并合并(fetch + merge)。
 
git push <alias> <target> —— 推送到远程仓库。
  • <branch>:推送指定分支(如 origin master)。
  • <tag_name>:推送单个标签(如 origin v1.0)。
  • -tags:一次性推送所有本地标签到远程。
  • f:强制推送(覆盖远程历史,慎用)。

合并与变基

git merge <branch> ——合并分支。
  • -no-ff:禁用"快进"。强制生成 Merge Commit 节点。
  • -ff-only:仅允许快进合并(如果必须创建 Merge Commit 则报错并停止)。
 
git rebase <branch> ——变基(整理历史)。
  • i:交互式变基。常用于 Squash(压缩)最近的几个提交。
git cherry-pick <commit_id> 将另一个分支的特定某次提交复制并合并到当前分支。

撤销与暂存

git reset <target> —— 回退版本。
  • -soft:软回退。撤销 Commit,保留代码在暂存区。
  • -hard:硬回退。撤销 Commit,丢弃所有修改。
  • -mixed:(默认) 撤销 Commit,保留代码在工作区。
 
git revert <commit_id> —— 反做。生成一个新的 Commit 来抵消指定的提交。
git stash —— 暂存工作现场。
  • pop:恢复最近一次暂存并删除记录。
  • list:列出所有暂存记录。
  • drop:删除最近一次暂存记录(不恢复)。
  • clear:清空所有暂存记录。aplstash@{n}:恢复指定的某次暂存。

.gitignore

  • #:注释。
  • !:取反(重新包含)。例如先忽略所有,再 !src/
  • / 结尾:仅匹配文件夹(如 node_modules/)。
  • :匹配多个字符。
  • ?:匹配单个字符。*:匹配多级目录(如sr/**build)。

指代符

.代表当前目录下的所有文件(递归)。
HEAD代表当前版本(最新的那个 commit)。
HEAD~n代表上n个版本(父提交)。
同理:HEAD~2 是上两个版本,HEAD^ 也常用来指代上一个版本。