Git 初学者使用手册
一份面向 Git 初学者的简明指南,带你理解 Git 三大核心区域(工作区、暂存区、远程仓库)及常用操作。
一、基础概念
Git 有三个核心区域,理解这三个区域是掌握 Git 的关键:

命令如下:
- clone(克隆): 从远程仓库中克隆代码到本地仓库。
- checkout (检出):从本地仓库中检出一个仓库分支然后进行修订。
- add(添加): 在提交前先将代码提交到暂存区。
- commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本。
- fetch (抓取) :从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
- pull (拉取) :从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+merge。
- push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库。
| 区域 | 说明 |
|---|---|
| 工作区 | 你电脑上能看到的项目目录,是你实际编辑文件的地方 |
| 暂存区 | 一个临时存放区域,用来暂存你准备提交的修改 |
| 本地仓库 | Git 存储已提交数据的地方,位于 .git 目录中 |
| 远程仓库 | 托管在服务器(如 GitHub、GitLab、Gitee)上的仓库,用于多人协作 |
二、工作区(Working Directory)
工作区就是你电脑上看到的项目文件夹。你在编辑器里修改文件、新增文件、删除文件,这些操作全都在工作区中进行。
2.1 git init --- 初始化仓库
将当前文件夹变成一个 Git 仓库,开始用 Git 管理它。
bash
git init
效果 :在当前目录下创建一个
.git隐藏文件夹,此后该目录中的文件变更都会被 Git 跟踪。
2.2 git status --- 查看当前状态
随时查看工作区和暂存区目前的状态,是 Git 最常用的命令之一。
bash
git status
效果:告诉你哪些文件被修改了、哪些是新文件、哪些已加入暂存区等待提交。初学者请多使用这个命令。
2.3 git diff --- 查看文件具体改了啥
查看工作区中尚未暂存的修改内容。
bash
git diff # 查看工作区所有未暂存的修改
git diff 文件名 # 查看某个文件的修改
效果 :逐行显示你对文件做了哪些改动(新增行标
+,删除行标-)。
2.4 git add --- 将修改添加到暂存区
将工作区的修改提交到暂存区,准备后续的提交。这是连接"工作区"和"暂存区"的桥梁。
bash
git add 文件名 # 添加指定文件到暂存区
git add . # 添加当前目录所有变更到暂存区
git add -A # 添加所有变更(包括删除操作)
效果:把工作区的修改"拍一张快照"放到暂存区。此时的修改还没被真正保存到仓库中,还可以继续调整。
2.5 git checkout -- <file> / git restore <file> --- 丢弃工作区的修改
如果你改乱了某个文件,想回到最近一次提交时的样子,可以用这个命令。
bash
git checkout -- 文件名 # 旧版写法
git restore 文件名 # 新版写法(推荐)
效果 :放弃工作区中对指定文件的所有修改,恢复到最近一次
git commit或git add时的状态。此操作不可撤销,谨慎使用。
2.6 git clean --- 清理未跟踪的文件
删掉工作区中新增的、Git 尚未跟踪的文件。
bash
git clean -n # 预览要删除的文件(安全模式)
git clean -f # 强制删除未跟踪文件
git clean -fd # 强制删除未跟踪的文件和目录
效果 :清理项目中新产生的、还没被
git add过的文件。建议先加-n预览再执行。
三、暂存区(Staging Area / Index)
暂存区(也叫索引区)是一个中间地带。你可以把它想象成一个"购物车":你在工作区里挑挑拣拣,把想"买"(提交)的东西先放到购物车里,最后一起结账(提交)。
3.1 git add --- 将文件放入暂存区
bash
git add 文件名
效果 :将文件从工作区→暂存区。可以多次
add再一次性commit。
3.2 git status --- 查看暂存区有哪些内容
bash
git status
效果:绿色部分显示的是已暂存(staged)的修改,红色部分显示的是工作区有改动但还没暂存的内容。
3.3 git diff --staged --- 查看暂存区中的改动
bash
git diff --staged # 或 git diff --cached
效果 :显示暂存区中已经
add但还未commit的改动内容。
3.4 git restore --staged <file> --- 从暂存区移出
如果你不小心把文件 add 进了暂存区,想把它移出来又不影响工作区的修改:
bash
git restore --staged 文件名 # 新版写法(推荐)
git reset HEAD 文件名 # 旧版写法
效果:将文件从暂存区移回工作区,文件本身的内容不会被修改。只是不再参与下一次提交。
3.5 git commit --- 提交暂存区到本地仓库
把暂存区中的所有改动打包成一个"版本",永久保存到本地仓库中。
bash
git commit -m "提交说明" # 带提交信息
效果:将暂存区的所有修改保存为一个新的提交(commit),生成一个唯一的提交 ID。每次提交都相当于项目的"历史快照"。
💡 好习惯:提交信息要写清楚这次改了什么,方便以后翻看。
3.6 git commit --amend --- 修改最近一次提交
如果刚提交完发现漏了文件,或者提交信息写错了:
bash
git add 漏掉的文件
git commit --amend -m "修正后的提交说明"
效果 :把当前暂存区的变更合并到最近一次提交中,同时可以修改提交信息。注意:如果已推送到远程仓库,慎用此命令。
3.7 git reset --- 撤销提交
bash
git reset --soft HEAD~1 # 撤销最近一次提交,保留工作区和暂存区的内容
git reset --mixed HEAD~1 # 撤销最近一次提交,保留工作区内容,清空暂存区(默认)
git reset --hard HEAD~1 # 撤销最近一次提交,同时丢弃工作区和暂存区的所有改动 ⚠️
效果:将当前分支回退到指定版本。
--soft:只是撤销提交,所有修改还在暂存区--mixed(默认):撤销提交,修改放回工作区--hard:彻底丢弃,无法找回!请谨慎使用
四、远程仓库(Remote Repository)
远程仓库是放在服务器上的 Git 仓库,用于备份代码和团队协作。常见的远程仓库托管平台有 GitHub、GitLab、Gitee 等。
4.1 git remote --- 管理远程仓库地址
bash
git remote -v # 查看当前有哪些远程仓库
git remote add origin 仓库地址 # 添加远程仓库,命名为 origin
git remote remove origin # 删除名为 origin 的远程仓库
git remote rename 旧名 新名 # 重命名远程仓库
效果 :
origin是远程仓库的默认名称,你可以理解为给远程仓库地址起了一个"别名"。
4.2 git clone --- 克隆远程仓库
把远程仓库的代码完整地复制到本地。
bash
git clone 仓库地址
git clone 仓库地址 自定义文件夹名
效果:在本地创建一个新文件夹,里面包含了远程仓库的所有文件和历史记录,并且自动配置好了远程仓库地址。
4.3 git push --- 推送本地提交到远程仓库
把你本地的提交上传到远程仓库,让别人能看到你的代码。
bash
git push origin main # 将本地 main 分支推送到 origin 远程
git push -u origin main # 第一次推送时加上 -u,建立追踪关系
git push --all # 推送所有本地分支
效果 :将本地已有提交上传到远程仓库。
-u设置 upstream,后续可以直接用git push简写。
4.4 git pull --- 拉取远程仓库更新
从远程仓库获取最新代码并自动合并到当前分支。
bash
git pull origin main # 拉取 origin 的 main 分支并合并
git pull # 如果有追踪关系,直接简写
效果 :等于
git fetch+git merge两个操作。将远程的最新代码拉到本地并自动合并。
4.5 git fetch --- 只获取更新,不自动合并
从远程仓库获取最新代码,但不会自动合并到你当前的工作中。
bash
git fetch origin # 获取远程仓库的所有更新
git fetch origin main # 获取远程 main 分支的更新
效果 :类似于"查看"一下远程仓库有没有新东西,但不会改变你的工作区。可以手动用
git merge或git rebase来合并。
git fetch vs git pull
| 命令 | 做了什么 | 安全吗? |
|---|---|---|
git fetch |
只下载远程新数据,不改你的代码 | ✅ 安全 |
git pull |
下载远程数据 + 自动合并到你的代码 | ⚠️ 可能有冲突 |
推荐做法 :不确定时先用 git fetch 看看有什么更新,确认没问题后再 git merge。
4.6 git merge --- 合并分支
将另一个分支的修改合并到当前分支。
bash
git merge 分支名 # 把指定分支合并到当前分支
效果:把两个分支的工作成果合并在一起。如果 Git 无法自动合并,会提示"冲突",需要手动解决。
4.7 git branch --- 管理分支
bash
git branch # 列出本地所有分支(*标记当前所在分支)
git branch 新分支名 # 创建一个新分支
git branch -d 分支名 # 删除一个分支
git branch -r # 查看远程分支
效果:分支是 Git 的核心概念,让你可以同时开发不同功能互不干扰。
4.8 git checkout / git switch --- 切换分支
bash
git checkout 分支名 # 切换到指定分支(旧版)
git switch 分支名 # 切换到指定分支(新版,推荐)
git switch -c 新分支名 # 创建并切换到新分支
效果:切换到其他分支,工作区的内容也会随之变为该分支的最新状态。
4.9 git log --- 查看提交历史
bash
git log # 查看提交历史(详细)
git log --oneline # 一行显示一条提交记录
git log --graph # 以图形化方式显示分支历史
git log -n 5 # 只看最近5条提交
效果:显示项目的提交历史,包括提交 ID、作者、日期、提交信息等。
五、快速参考卡片
📁 工作区常用命令
| 你想干啥 | 命令 |
|---|---|
| 初始化仓库 | git init |
| 查看状态 | git status |
| 查看修改内容 | git diff |
| 丢弃工作区修改 | git restore 文件名 |
| 清理未跟踪文件 | git clean -fd |
📋 暂存区常用命令
| 你想干啥 | 命令 |
|---|---|
| 添加到暂存区 | git add 文件名 |
| 查看暂存区改动 | git diff --staged |
| 从暂存区移出 | git restore --staged 文件名 |
| 提交到本地仓库 | git commit -m "说明" |
| 修改上次提交 | git commit --amend |
☁️ 远程仓库常用命令
| 你想干啥 | 命令 |
|---|---|
| 克隆远程仓库 | git clone 地址 |
| 查看远程地址 | git remote -v |
| 添加远程地址 | git remote add origin 地址 |
| 推送到远程 | git push origin 分支名 |
| 拉取远程更新 | git pull origin 分支名 |
| 仅获取更新 | git fetch origin |
| 查看提交历史 | git log --oneline --graph |
| 创建分支 | git branch 分支名 |
| 切换分支 | git switch 分支名 |
| 合并分支 | git merge 分支名 |
一个典型的工作流程
# 1. 初始化或克隆
git init # 或 git clone 远程地址
# 2. 在 工作区 里修改文件
# (用编辑器打开项目,改代码)
# 3. 查看当前状态
git status
# 4. 将修改 添加到暂存区
git add .
# 5. 提交到 本地仓库
git commit -m "完成了某某功能"
# 6. 推送到 远程仓库
git push origin main
写给初学者的几句话:
- 不要怕犯错,Git 的大部分操作都是可逆的。
- 多敲
git status和git log,它们是你最好的"导航仪"。- 提交时写清楚说明,将来的你会感谢现在的自己。
- 在不确定后果的操作前(尤其是
--hard参数),先备份或查阅资料。