Lazy loaded image
👌Git 指令速记
Words 4500Read Time 12 min
2026-6-25
2026-7-7
type
Post
status
Published
date
Jun 25, 2026
slug
gitnote
summary
面向初学者到中级开发者的一份 Git 复习笔记。理解:文件从工作区到暂存区,再到本地仓库,最后同步到远程仓库 的过程。
tags
必看精选
笔记
工具
category
知识小记
icon
password
类型
日期
Feb 5, 2024
标签
概述
状态
完成

Git 常用指令大全与总结

面向初学者到中级开发者的一份 Git 复习笔记。
理解:文件从工作区到暂存区,再到本地仓库,最后同步到远程仓库 的过程。

1. Git 的作用与基本概念

1.1 Git 是什么

Git 是一个分布式版本控制系统,主要用来管理代码的修改历史。它可以帮助我们:
  • 记录每一次代码变更
  • 回退到某个历史版本
  • 在不同功能之间使用分支隔离开发
  • 与团队成员协作开发
  • 把本地代码同步到 GitHub、GitLab、Gitee 等远程仓库
简单说,Git 解决的是一个很现实的问题:代码改来改去,怎么保证能查、能退、能合并、能协作。

1.2 Git 的几个核心区域

区域
英文
作用
工作区
Working Directory
你正在编辑的项目文件
暂存区
Staging Area / Index
准备提交的修改清单
本地仓库
Local Repository
本机保存的提交历史
远程仓库
Remote Repository
GitHub、GitLab、Gitee 上的共享仓库
常见流程:
对应关系:

1.3 Git 的几个核心概念

概念
说明
commit
一次提交,可以理解为代码历史中的一个存档点
branch
分支,用来隔离不同功能或版本
merge
合并,把一个分支的修改合到另一个分支
conflict
冲突,多个分支修改了同一位置,Git 无法自动判断保留谁
remote
远程仓库地址,例如 origin
HEAD
当前所在提交位置,通常指向当前分支的最新提交

2. 常用指令分类讲解

2.1 初始化与配置

指令
作用说明
常见使用场景
示例命令
git init
在当前目录初始化一个 Git 仓库
本地新建项目后,想开始用 Git 管理
git init
git clone <仓库地址>
从远程仓库复制项目到本地
第一次拉取别人的项目或公司项目
git clone <https://github.com/user/repo.git>
git config --global user.name <用户名>
设置全局提交用户名
第一次安装 Git 后配置身份
git config --global user.name "Tom"
git config --global user.email <邮箱>
设置全局提交邮箱
第一次安装 Git 后配置身份
git config --global user.email "tom@example.com"
git config --list
查看当前 Git 配置
检查用户名、邮箱、代理等配置
git config --list

实战小技巧

  • -global 表示对当前电脑用户生效。
  • 如果只想对某个项目单独设置用户名或邮箱,进入项目目录后去掉 -global 即可。

2.2 查看状态与历史

指令
作用说明
常见使用场景
示例命令
git status
查看工作区和暂存区状态
提交前确认哪些文件被修改、暂存或未跟踪
git status
git status -s
以简洁格式查看状态
文件很多时快速扫一眼改动
git status -s
git log
查看提交历史
想知道项目之前提交过什么
git log
git log --oneline
单行查看提交历史
快速查看 commit id 和提交信息
git log --oneline
git log --graph --oneline --all
图形化查看所有分支历史
分支较多时观察合并关系
git log --graph --oneline --all
git diff
查看工作区中尚未暂存的修改
git add 前检查自己改了什么
git diff
git diff --staged
查看已经暂存但尚未提交的修改
git commit 前检查暂存区内容
git diff --staged
git show <commit>
查看某次提交的具体内容
排查某次提交改了哪些文件
git show a1b2c3d

实战小技巧

提交前建议养成这个顺序:
这样可以减少“把不该提交的东西提交上去”的情况。

2.3 添加与提交

指令
作用说明
常见使用场景
示例命令
git add <文件>
将指定文件加入暂存区
只想提交某个文件的修改
git add index.html
git add .
将当前目录下的修改加入暂存区
一次性暂存当前目录所有改动
git add .
git add -A
暂存所有修改,包括新增、修改、删除
想完整记录本次工作区变化
git add -A
git commit -m "说明"
将暂存区内容提交到本地仓库
完成一个功能点或修复后保存历史
git commit -m "新增登录页面"
git commit -am "说明"
跳过 git add,提交已跟踪文件的修改
只修改了已被 Git 管理的文件
git commit -am "修复按钮样式"
git commit --amend
修改上一次提交
上次提交信息写错,或漏提交了小改动
git commit --amend

实战小技巧

  • git commit -am 不会提交新文件,因为新文件还没有被 Git 跟踪。
  • 一次提交最好只表达一个清晰意图,例如“新增登录表单”或“修复分页计算错误”。
  • 提交信息不建议写成 updatefix bug修改代码,以后回看会很痛苦。
推荐格式:

2.4 分支管理

指令
作用说明
常见使用场景
示例命令
git branch
查看本地分支
想知道当前项目有哪些分支
git branch
git branch -a
查看本地和远程所有分支
想确认远程是否有某个分支
git branch -a
git branch <分支名>
创建新分支
准备开发新功能,但暂时不切换过去
git branch feature-login
git switch <分支名>
切换分支
从当前分支切换到目标分支
git switch feature-login
git switch -c <分支名>
创建并切换到新分支
开始开发一个新功能
git switch -c feature-login
git checkout <分支名>
切换分支的旧写法
老项目或旧教程中常见
git checkout main
git checkout -b <分支名>
创建并切换分支的旧写法
老项目或旧教程中常见
git checkout -b feature-login
git branch -d <分支名>
删除已经合并的本地分支
功能分支合并后清理本地分支
git branch -d feature-login
git branch -D <分支名>
强制删除本地分支
分支没合并但确定不要了
git branch -D test-branch
git branch -m <新分支名>
重命名当前分支
分支名写错或需要规范命名
git branch -m feature-auth

实战小技巧

推荐分支命名:
类型
示例
功能分支
feature/login
修复分支
fix/login-error
文档分支
docs/git-note
重构分支
refactor/user-service
常见开发流程:

2.5 合并与冲突处理

指令
作用说明
常见使用场景
示例命令
git merge <分支名>
将指定分支合并到当前分支
功能开发完成后合并到主分支
git merge feature-login
git merge --abort
取消当前合并过程
合并冲突太多,想先退回合并前状态
git merge --abort
git rebase <分支名>
将当前分支的提交“移动”到目标分支之后
保持提交历史更线性
git rebase main
git rebase --continue
解决冲突后继续 rebase
rebase 过程中处理完冲突
git rebase --continue
git rebase --abort
取消当前 rebase
rebase 出问题,想回到开始前
git rebase --abort

冲突处理流程

当 Git 提示冲突时,文件里通常会出现类似内容:
处理步骤:
  1. 打开冲突文件
  1. 手动决定保留哪部分内容,或整合两边内容
  1. 删除 <<<<<<<=======>>>>>>> 标记
  1. 暂存解决后的文件
  1. 完成合并或继续 rebase
如果是 rebase:

mergerebase 怎么选

方式
特点
适合场景
merge
保留真实分支合并记录
团队协作、主分支合并功能分支
rebase
历史更线性,但会改写提交历史
个人功能分支同步主分支最新代码
经验建议:
  • 已经推送到远程并且多人基于它开发的分支,不要随便 rebase。
  • 自己本地的功能分支,可以用 rebase 整理历史。

2.6 远程仓库操作

指令
作用说明
常见使用场景
示例命令
git remote -v
查看远程仓库地址
检查当前项目连接到哪个远程仓库
git remote -v
git remote add origin <地址>
添加远程仓库地址
本地项目第一次关联 GitHub 仓库
git remote add origin <https://github.com/user/repo.git>
git remote set-url origin <地址>
修改远程仓库地址
仓库地址变更,或从 HTTPS 改成 SSH
git remote set-url origin git@github.com:user/repo.git
git fetch
拉取远程更新,但不自动合并
想先看看远程有什么新内容
git fetch origin
git pull
拉取远程更新并合并到当前分支
开发前同步最新代码
git pull
git push
将本地提交推送到远程
本地提交完成后同步给团队
git push
git push -u origin <分支名>
首次推送分支并建立上游关联
新分支第一次推送到远程
git push -u origin feature-login
git push origin --delete <分支名>
删除远程分支
功能分支合并后清理远程分支
git push origin --delete feature-login

实战小技巧

fetchpull 的区别:
如果你想稳一点,可以先:
确认远程变化后再决定怎么合并。

2.7 撤销与回退

这一部分最容易误用。建议先理解三句话:
  • restore 常用于撤销工作区或暂存区的修改。
  • reset 常用于移动提交指针,可能影响暂存区和工作区。
  • revert 会新增一次“反向提交”,适合撤销已经推送的提交。
指令
作用说明
常见使用场景
示例命令
git restore <文件>
撤销工作区中某个文件的修改
文件改乱了,想恢复到最近一次提交状态
git restore index.html
git restore --staged <文件>
将文件从暂存区移出,但保留工作区修改
git add 后发现暂时不想提交这个文件
git restore --staged index.html
git reset HEAD <文件>
取消暂存的旧写法
老教程中常见,作用类似取消 git add
git reset HEAD index.html
git reset --soft <commit>
回退提交,但保留修改在暂存区
提交早了,想重新组织提交
git reset --soft HEAD~1
git reset --mixed <commit>
回退提交,保留修改在工作区
默认模式,想重新选择哪些文件提交
git reset --mixed HEAD~1
git reset --hard <commit>
强制回退,丢弃之后的提交和修改
确定不要某些提交和本地改动
git reset --hard HEAD~1
git revert <commit>
新建一次反向提交来撤销某次提交
撤销已经推送到远程的提交
git revert a1b2c3d
git clean -fd
删除未被 Git 跟踪的文件和目录
清理构建产物或临时文件
git clean -fd
git stash
临时保存当前未提交修改
正在开发时需要切换分支处理别的事
git stash
git stash pop
恢复最近一次 stash,并删除该 stash 记录
回到原任务继续开发
git stash pop
git stash list
查看 stash 列表
临时保存过多次,想确认记录
git stash list

高风险命令提醒

下面这些命令会丢弃内容,执行前一定要确认:
如果不确定,先运行:
必要时可以先创建一个临时分支保底:

3. 常用命令速查表

分类
指令
用途
初始化
git init
初始化本地仓库
克隆
git clone <url>
从远程复制仓库
状态
git status
查看文件状态
差异
git diff
查看修改内容
暂存
git add .
添加修改到暂存区
提交
git commit -m "说明"
提交到本地仓库
历史
git log --oneline
查看提交历史
分支
git branch
查看分支
切换
git switch <分支>
切换分支
合并
git merge <分支>
合并分支
拉取
git pull
拉取远程更新
推送
git push
推送本地提交
撤销
git restore <文件>
撤销工作区修改
回退
git reset --soft HEAD~1
回退提交但保留修改
反撤销
git revert <commit>
用新提交撤销旧提交
暂存现场
git stash
临时保存当前修改

4. 总结

4.1 最常用的 10 个命令

排名
命令
核心用途
1
git status
查看当前状态
2
git add .
暂存修改
3
git commit -m "说明"
提交修改
4
git log --oneline
查看提交历史
5
git diff
查看修改差异
6
git switch -c <分支名>
创建并切换分支
7
git switch <分支名>
切换分支
8
git pull
拉取远程最新代码
9
git push
推送本地提交
10
git merge <分支名>
合并分支
如果只记一条主线,就是:

4.2 学习 Git 的核心思路

学习 Git 不要一开始就死背所有命令,先抓住这几条主线:

第一条主线:文件流转

对应命令:

第二条主线:分支协作

对应命令:

第三条主线:出错恢复

出错并不可怕,关键是先判断“错发生在哪个区域”:
出错位置
常用处理
工作区改乱了
git restore <文件>
不小心 add 了
git restore --staged <文件>
commit 写错了
git commit --amend
本地提交想撤回
git reset --soft HEAD~1
已推送提交想撤销
git revert <commit>

4.3 容易混淆的概念对比

git fetch vs git pull

命令
是否合并
说明
git fetch
只下载远程更新,不改变当前工作分支
git pull
下载远程更新,并合并到当前分支
建议:想稳妥观察远程变化时用 fetch,日常同步代码常用 pull

git merge vs git rebase

命令
历史特点
适合场景
git merge
保留合并记录
团队协作、主分支合并
git rebase
历史更线性
整理个人功能分支
建议:初学者优先掌握 merge,熟悉之后再学习 rebase

git reset vs git revert

命令
是否改写历史
适合场景
git reset
本地提交回退
git revert
撤销已经推送的提交
建议:已经推送到远程的提交,优先用 revert

git restore vs git reset

命令
主要用途
说明
git restore
恢复文件状态
更适合撤销文件修改或取消暂存
git reset
移动提交指针
更适合回退提交
建议:文件级撤销用 restore,提交级回退用 reset

git checkout vs git switch

命令
说明
git checkout
旧命令,既能切分支,也能恢复文件,功能较杂
git switch
新命令,专门用于切换分支,语义更清晰
建议:新手优先使用 git switch

4.4 新手使用建议

  1. 每次提交前先运行 git status,确认当前状态。
  1. 提交前用 git diff 看一眼自己到底改了什么。
  1. 一次提交只做一件事,提交信息写清楚。
  1. 开发新功能前先从主分支拉最新代码。
  1. 不要直接在 main 分支上做复杂开发,尽量新建功能分支。
  1. 不确定 reset --hardclean -fd 这种命令后果时,不要急着执行。
  1. 已经推送到远程的提交,不要随便改写历史。
  1. 遇到冲突不要慌,先打开文件看冲突标记,再手动整理。
  1. 学会用 git stash 临时保存现场,切换任务会舒服很多。
  1. Git 的核心不是命令数量,而是知道修改现在处在哪个区域。

5. 一套推荐的日常工作流

开始新功能

开发中提交代码

推送到远程

合并前同步主分支

功能完成后

6. 最后记一句

Git 的学习顺序建议是:
真正熟练使用 Git,不是因为记住了所有命令,而是因为你能判断:
  • 当前修改在哪里?
  • 我要保存、撤销、同步,还是合并?
  • 这个操作会不会影响别人?
只要这三个问题想清楚,Git 就会从“玄学工具”变成可靠的开发伙伴。
上一篇
React API
下一篇
GITHUB 插件 - Metircs