1864 字
9 分钟
Git 常用命令速查手册

配置#

Terminal window
# 设置用户名和邮箱(必做)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# 设置默认分支名
git config --global init.defaultBranch main
# 设置别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
# 查看所有配置
git config --list

仓库操作#

Terminal window
# 初始化仓库
git init
# 克隆仓库
git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git
# 克隆指定分支
git clone -b dev https://github.com/user/repo.git

暂存与提交#

Terminal window
# 查看文件状态
git status
git status -s # 简短格式
# 暂存文件
git add file.txt # 暂存单个文件
git add src/ # 暂存整个目录
git add -A # 暂存所有变更(新增+修改+删除)
git add -u # 暂存修改和删除,不含新增
git add -p # 交互式选择暂存
# 撤销暂存
git restore --staged file.txt
# 提交
git commit -m "feat: 添加登录页"
git commit -am "fix: 修复样式问题" # 暂存已跟踪文件并提交(跳过 git add)
git commit --amend -m "新的提交信息" # 修改最近一次提交信息
git commit --amend --no-edit # 追加到最近一次提交,不修改信息

提交信息规范#

常用前缀:feat(新功能)、fix(修复)、docs(文档)、refactor(重构)、style(格式)、test(测试)、chore(杂项)。

Terminal window
git commit -m "feat: 添加用户注册"
git commit -m "fix: 修复空密码登录 500 错误"
git commit -m "refactor: 提取 token 工具函数"

分支操作#

Terminal window
# 查看分支
git branch # 本地分支
git branch -r # 远程分支
git branch -a # 所有分支
git branch -v # 分支最后一次提交
# 创建分支
git branch feature-login
git checkout -b feature-login # 创建并切换
git switch -c feature-login # 同上(Git 2.23+)
# 切换分支
git checkout main
git switch main # 推荐
# 删除分支
git branch -d feature-login # 安全删除(已合并)
git branch -D feature-login # 强制删除(未合并也删)
# 删除远程分支
git push origin --delete feature-login
# 重命名分支
git branch -m old-name new-name

合并与变基#

Terminal window
# 合并分支(保留完整历史)
git merge feature-login
# 合并并压缩提交
git merge --squash feature-login
# 变基(线性历史,更干净)
git rebase main # 在 feature 分支上执行,把当前分支接到 main 最新提交上
# 交互式变基(用来整理提交历史)
git rebase -i HEAD~3 # 整理最近 3 个提交
# 变基时遇到冲突
git rebase --continue # 解决冲突后继续
git rebase --skip # 跳过当前提交
git rebase --abort # 取消整个变基
# 合并冲突时
git merge --abort # 取消合并

远程仓库#

Terminal window
# 查看远程仓库
git remote -v
# 添加远程仓库
git remote add origin https://github.com/user/repo.git
# 修改远程地址
git remote set-url origin git@github.com:user/repo.git
# 删除远程仓库
git remote remove origin

拉取与推送#

Terminal window
# 拉取代码
git pull # = git fetch + git merge
git pull --rebase # = git fetch + git rebase(推荐,保持历史线性)
# 仅获取远程更新(不合并)
git fetch
git fetch --prune # 同时清理本地已删除的远程分支引用
# 推送
git push origin main
git push -u origin main # 首次推送并建立追踪关系
git push --force-with-lease # 安全强制推送(检查远程是否有新提交)
git push --force # 危险!强制推送,覆盖远程

查看历史#

Terminal window
# 提交日志
git log
git log --oneline # 一行一条
git log --oneline --graph --all # 图形化分支历史
git log --author="John" # 按作者过滤
git log --since="2026-01-01" # 按时间过滤
git log -p file.txt # 查看某文件的变更历史
git log -3 # 最近 3 条
# 查看某次提交详情
git show HEAD
git show abc1234
git show abc1234 --stat # 只看变更文件列表
# 查看谁改了什么
git blame file.txt
git blame -L 10,30 file.txt # 只看 10-30 行

比较差异#

Terminal window
# 工作区 vs 暂存区
git diff
# 暂存区 vs 最新提交
git diff --staged
git diff --cached # 同上
# 工作区 vs 最新提交
git diff HEAD
# 比较两个分支
git diff main..feature-login
git diff main...feature-login # feature 分支独有改动(三点语法)
# 比较两个提交
git diff abc1234 def5678

撤销变更#

Terminal window
# 丢弃工作区改动
git restore file.txt
git checkout -- file.txt # 旧写法
# 丢弃所有工作区改动
git restore .
# 撤销暂存
git restore --staged file.txt
# 回退提交(保留工作区改动)
git reset --soft HEAD~1 # 撤销 commit,改动回到暂存区
git reset HEAD~1 # 默认 --mixed:撤销 commit,改动回到工作区
git reset --hard HEAD~1 # 撤销 commit,丢弃所有改动(危险!)
# 安全撤销——创建新提交来抵消旧提交
git revert abc1234
git revert HEAD # 撤销最近一次提交

储藏#

临时保存未完成的改动,切换分支处理紧急任务。

Terminal window
git stash # 储藏当前改动
git stash save "WIP: 修复认证 bug"
git stash list # 查看储藏列表
git stash pop # 恢复最近一次储藏并删除记录
git stash pop stash@{1} # 恢复指定储藏
git stash apply # 恢复储藏但不删除记录
git stash drop stash@{0} # 删除指定储藏
git stash clear # 清空所有储藏

标签#

Terminal window
# 创建标签
git tag v1.0.0 # 轻量标签
git tag -a v1.0.0 -m "发布 v1.0.0" # 附注标签(推荐)
# 为历史提交打标签
git tag -a v0.9.0 abc1234 -m "预发布版本"
# 查看标签
git tag
git tag -l "v1.*" # 通配符过滤
git show v1.0.0
# 推送标签
git push origin v1.0.0 # 推送单个标签
git push origin --tags # 推送所有标签
# 删除标签
git tag -d v1.0.0 # 删除本地
git push origin --delete v1.0.0 # 删除远程

摘樱桃#

将特定提交应用到当前分支。

Terminal window
# 单个提交
git cherry-pick abc1234
# 多个提交
git cherry-pick abc1234 def5678
# 连续范围(范围不包含 start 的提交)
git cherry-pick abc1234..def5678
# 遇到冲突
git cherry-pick --continue
git cherry-pick --abort

应急救火#

Terminal window
# 查看所有操作记录(救命命令)
git reflog
# 回到某个 reflog 记录的状态
git reset --hard HEAD@{2}
# 找回误删的分支
git checkout -b recovered-branch HEAD@{5}
# 修改最近一次提交的作者
git commit --amend --author="Name <email>"
# 撤销某次 commit 而不丢失之后的改动
git revert <bad-commit>
# 查看某个文件在某个提交时的内容
git show abc1234:path/to/file.txt

工作流速查#

Terminal window
# === 日常开发 ===
git pull --rebase # 拉取最新代码
git switch -c feat/new-thing # 创建功能分支
# ... 写代码 ...
git add -A
git commit -m "feat: 完成功能开发"
git push -u origin feat/new-thing # 推送并创建 PR
# === 合并到 main ===
git switch main
git pull --rebase
git merge feat/new-thing
git push origin main
# === 合并后清理 ===
git branch -d feat/new-thing # 删除本地分支
git push origin --delete feat/new-thing # 删除远程分支
git fetch --prune # 清理本地远程分支引用
# === 从 PR 拉取代码到本地测试 ===
git fetch origin pull/<PR-ID>/head:pr-<PR-ID>
git switch pr-<PR-ID>

常见场景#

场景一:提交到错误分支#

改动写在了 feature-a,但应该属于 feature-b:

Terminal window
git stash # 储藏改动
git switch feature-b
git stash pop # 恢复改动
git add -A && git commit -m "feat: 完成功能"

场景二:误提交了不该提交的文件#

Terminal window
git reset --soft HEAD~1 # 撤销 commit,改动回到暂存区
git restore --staged bad-file.txt # 取消暂存该文件
git commit -m "修正提交"

场景三:推送被拒绝(远程有新提交)#

Terminal window
git pull --rebase # 拉取并变基
# 解决冲突(如果有)
git push origin main

场景四:合并多个提交为一个#

Terminal window
git rebase -i HEAD~3 # 编辑最近 3 个提交
# 编辑器中:保留第一个 pick,其余改为 squash(s) 或 fixup(f)
# 保存退出,编辑合并后的提交信息
git push --force-with-lease # 注意:rebase 后需强制推送
Git 常用命令速查手册
https://blog.syomega.top/posts/git-common-commands/
作者
酱w
发布于
2026-05-15
许可协议
CC BY-NC-SA 4.0