Git 常用命令速查表

命令 参数/选项 说明
初始化 & 克隆
git init 初始化新仓库
git clone [url] 克隆远程仓库
--depth [n] 浅克隆(仅下载最近 n 次提交)
状态与差异
git status -s 简洁模式输出
git diff 显示未暂存的修改
--staged / --cached 显示已暂存的修改
[commit1] [commit2] 比较两次提交差异
暂存更改
git add [file] 添加指定文件到暂存区
. 添加所有修改文件
-p / --patch 交互式选择修改片段
提交更改
git commit -m "message" 提交并添加提交信息
-a 自动添加已跟踪文件并提交(跳过 git add
--amend 修改最后一次提交
分支管理
git branch 列出本地分支
[branch-name] 创建新分支
-d [branch] 删除分支
-D [branch] 强制删除分支(即使未合并)
-m [old] [new] 重命名分支
git checkout [branch] 切换分支
-b [new-branch] 创建并切换到新分支
[file] 丢弃工作区文件修改
git switch [branch] 切换分支(Git 2.23+)
-c [new-branch] 创建并切换到新分支(Git 2.23+)
合并与变基
git merge [branch] 合并指定分支到当前分支
--no-ff 禁用快进合并(保留合并历史)
--abort 终止合并冲突解决
git rebase [branch] 变基当前分支到目标分支
-i [commit] 交互式变基(修改提交历史)
撤销操作
git restore [file] 丢弃工作区修改(Git 2.23+)
--staged [file] 取消暂存文件(Git 2.23+)
git reset HEAD~[n] 回退到前 n 次提交
--soft 保留工作区和暂存区
--mixed (默认) 保留工作区,重置暂存区
--hard 丢弃所有修改(慎用!)
git revert [commit] 创建撤销指定提交的新提交
远程操作
git remote -v 查看远程仓库信息
add [name] [url] 添加远程仓库
rm [name] 移除远程仓库
git fetch [remote] 下载远程仓库更新(不自动合并)
--all 获取所有远程仓库更新
git pull [remote] [branch] 获取并合并远程更改(= fetch + merge)
--rebase 使用变基代替合并
git push [remote] [branch] 推送本地提交到远程
-u 设置上游分支(后续可省略参数)
--force / -f 强制覆盖远程分支(慎用!)
--force-with-lease 安全强制推送(检查远程分支状态)
--tags 推送所有标签
日志与历史
git log --oneline 简洁提交历史(单行显示)
--graph 图形化显示分支拓扑
-p 显示具体修改内容
-[n] 显示最近 n 条记录
git reflog 显示所有操作历史(包括被重置的提交)
储藏更改
git stash 临时储藏工作区修改
save "message" 储藏并添加描述信息
list 查看储藏列表
pop 恢复最近储藏并删除
apply stash@{n} 恢复指定储藏(不删除)
drop stash@{n} 删除指定储藏
标签管理
git tag 列出所有标签
[tagname] 创建轻量标签
-a [tagname] -m "msg" 创建附注标签(含注释)
-d [tagname] 删除标签
push [remote] [tagname] 推送单个标签到远程
push [remote] --tags 推送所有标签到远程
高级操作
git cherry-pick [commit] 将指定提交应用到当前分支
git bisect start 启动二分查找定位问题提交
good [commit] 标记正常提交
bad [commit] 标记问题提交
git submodule add [url] [path] 添加子模块
update --init 初始化并更新子模块

常用组合示例

# 创建并切换到新分支
git checkout -b feature-new

# 安全强制推送(推荐)
git push origin main --force-with-lease

# 交互式变基(修改最近3次提交)
git rebase -i HEAD~3

# 撤销工作区修改
git restore README.md

# 查看简洁状态和提交历史
git status -s
git log --oneline --graph -5