Git 速查手册

常用Git命令中文参考
初始化提交分支合并远程日志暂存撤销标签配置对比进阶

初始化与克隆

基础git init
在当前目录初始化一个新的Git仓库
基础git init my-project
创建名为my-project的新目录并初始化仓库
基础git clone https://github.com/user/repo.git
克隆远程仓库到本地
基础git clone https://github.com/user/repo.git my-dir
克隆到指定目录名

暂存与提交

基础git add file.txt
暂存指定文件
基础git add .
暂存当前目录下所有修改
基础git add -A
暂存整个仓库的所有修改(含删除)
基础git add -p
交互式暂存,逐块选择要提交的修改
基础git commit -m "feat: 新功能"
提交暂存区的修改
基础git commit -a -m "fix: 修复bug"
跳过add,直接提交所有已跟踪文件的修改
撤销git commit --amend -m "新消息"
修改最近一次提交的消息
撤销git commit --amend --no-edit
追加文件到上次提交,不修改提交消息

分支管理

分支git branch
列出所有本地分支
分支git branch -a
列出所有分支(含远程)
分支git branch feature-login
创建新分支
分支git checkout -b feature-login
创建并切换到新分支
分支git switch -c feature-login
创建并切换到新分支(推荐方式)
分支git switch main
切换到已有分支
分支git branch -d feature-login
删除已合并的分支
分支git branch -D feature-login
强制删除未合并的分支
分支git branch -m old-name new-name
重命名分支

合并与变基

分支git merge feature-login
将指定分支合并到当前分支
分支git merge --no-ff -m "merge" feature-login
禁用快进合并,创建合并提交
分支git rebase main
将当前分支变基到main分支
分支git rebase -i HEAD~3
交互式变基,修改最近3次提交
分支git rebase --abort
中止变基操作,恢复原状
分支git cherry-pick abc1234
将指定提交应用到当前分支

远程操作

远程git remote -v
查看远程仓库地址
远程git remote add origin https://github.com/user/repo.git
添加远程仓库
远程git push -u origin main
推送并设置上游分支
远程git push --force-with-lease
安全地强制推送(推荐)
远程git pull origin main
拉取远程更新并合并
远程git fetch --all
获取所有远程更新(不合并)
远程git remote rename origin upstream
重命名远程仓库
远程git remote remove origin
移除远程仓库

查看日志

基础git log --oneline
简洁查看提交历史
基础git log --graph --oneline --all
图形化查看所有分支提交历史
基础git log -p -- file.txt
查看指定文件的修改历史
基础git log --author="张三" --since="2024-01-01"
按作者和日期过滤日志
基础git blame file.txt
查看文件每行最后修改的提交和作者
基础git shortlog -sn
统计每个作者的提交次数

暂存工作区

基础git stash
暂存当前工作区修改
基础git stash push -m "正在开发登录功能"
带描述暂存
基础git stash list
查看所有暂存记录
基础git stash pop
恢复最近一次暂存并删除记录
基础git stash apply stash@{1}
恢复指定暂存但不删除记录
基础git stash drop stash@{0}
删除指定暂存记录
基础git stash clear
清空所有暂存记录

撤销与回退

撤销git reset --soft HEAD~1
回退提交,保留暂存区和工作区修改
撤销git reset HEAD file.txt
取消暂存指定文件(默认mixed)
撤销git reset --hard HEAD~1
⚠️ 硬回退,丢弃所有修改
撤销git checkout -- file.txt
丢弃工作区指定文件的修改
撤销git restore file.txt
恢复工作区文件(推荐方式)
撤销git restore --staged file.txt
取消暂存指定文件
撤销git revert abc1234
创建新提交来撤销指定提交
撤销git reflog
查看HEAD移动历史,用于恢复误删提交

标签管理

基础git tag
列出所有标签
基础git tag v1.0.0
在当前提交创建轻量标签
基础git tag -a v1.0.0 -m "版本1.0.0发布"
创建带注释的标签
远程git push origin v1.0.0
推送指定标签到远程
远程git push --tags
推送所有标签到远程
基础git tag -d v1.0.0
删除本地标签

对比差异

基础git diff
查看工作区与暂存区的差异
基础git diff --staged
查看暂存区与上次提交的差异
基础git diff main..feature
对比两个分支的差异
基础git diff HEAD~3
查看最近3次提交的修改
基础git diff --name-only main..feature
只显示有差异的文件名
基础git diff --stat main..feature
显示差异统计摘要

配置与杂项

配置git config --global user.name "张三"
设置全局用户名
配置git config --global user.email "zhangsan@example.com"
设置全局邮箱
配置git config --global core.editor code
设置默认编辑器为VS Code
配置git config --list
查看所有配置
基础git clean -fd
删除未跟踪的文件和目录
基础git show abc1234
查看指定提交的详细信息和diff
基础git bisect start / git bisect good / git bisect bad
二分查找引入bug的提交
基础git submodule update --init --recursive
初始化并更新子模块

进阶操作

分支git rebase -i HEAD~5
交互式变基:压缩、重排、编辑最近提交
分支git worktree add ../hotfix-branch hotfix
在另一个目录同时检出另一个分支
基础git bisect run npm test
自动化二分查找(用测试脚本判断好坏)
基础git archive -o latest.zip HEAD
导出当前提交为zip压缩包
基础git sparse-checkout init --cone && git sparse-checkout set src/
稀疏检出,只拉取部分目录
撤销git restore --source=HEAD~3 -- file.txt
从指定提交恢复单个文件
← 首页