Git 初学者使用手册

一份面向 Git 初学者的简明指南,带你理解 Git 三大核心区域(工作区、暂存区、远程仓库)及常用操作。


一、基础概念

Git 有三个核心区域,理解这三个区域是掌握 Git 的关键:

img

命令如下:

  1. clone(克隆): 从远程仓库中克隆代码到本地仓库。
  2. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订。
  3. add(添加): 在提交前先将代码提交到暂存区。
  4. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本。
  5. fetch (抓取) :从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
  6. pull (拉取) :从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+merge。
  7. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库。
区域 说明
工作区 你电脑上能看到的项目目录,是你实际编辑文件的地方
暂存区 一个临时存放区域,用来暂存你准备提交的修改
本地仓库 Git 存储已提交数据的地方,位于 .git 目录中
远程仓库 托管在服务器(如 GitHub、GitLab、Gitee)上的仓库,用于多人协作

二、工作区(Working Directory)

工作区就是你电脑上看到的项目文件夹。你在编辑器里修改文件、新增文件、删除文件,这些操作全都在工作区中进行。

2.1 git init — 初始化仓库

将当前文件夹变成一个 Git 仓库,开始用 Git 管理它。

1
git init

效果:在当前目录下创建一个 .git 隐藏文件夹,此后该目录中的文件变更都会被 Git 跟踪。

2.2 git status — 查看当前状态

随时查看工作区和暂存区目前的状态,是 Git 最常用的命令之一。

1
git status

效果:告诉你哪些文件被修改了、哪些是新文件、哪些已加入暂存区等待提交。初学者请多使用这个命令。

2.3 git diff — 查看文件具体改了啥

查看工作区中尚未暂存的修改内容。

1
2
git diff                 # 查看工作区所有未暂存的修改
git diff 文件名 # 查看某个文件的修改

效果:逐行显示你对文件做了哪些改动(新增行标 +,删除行标 -)。

2.4 git add — 将修改添加到暂存区

将工作区的修改提交到暂存区,准备后续的提交。这是连接”工作区”和”暂存区”的桥梁。

1
2
3
git add 文件名           # 添加指定文件到暂存区
git add . # 添加当前目录所有变更到暂存区
git add -A # 添加所有变更(包括删除操作)

效果:把工作区的修改”拍一张快照”放到暂存区。此时的修改还没被真正保存到仓库中,还可以继续调整。

2.5 git checkout -- <file> / git restore <file> — 丢弃工作区的修改

如果你改乱了某个文件,想回到最近一次提交时的样子,可以用这个命令。

1
2
git checkout -- 文件名    # 旧版写法
git restore 文件名 # 新版写法(推荐)

效果:放弃工作区中对指定文件的所有修改,恢复到最近一次 git commitgit add 时的状态。此操作不可撤销,谨慎使用。

2.6 git clean — 清理未跟踪的文件

删掉工作区中新增的、Git 尚未跟踪的文件。

1
2
3
git clean -n             # 预览要删除的文件(安全模式)
git clean -f # 强制删除未跟踪文件
git clean -fd # 强制删除未跟踪的文件和目录

效果:清理项目中新产生的、还没被 git add 过的文件。建议先加 -n 预览再执行。


三、暂存区(Staging Area / Index)

暂存区(也叫索引区)是一个中间地带。你可以把它想象成一个”购物车”:你在工作区里挑挑拣拣,把想”买”(提交)的东西先放到购物车里,最后一起结账(提交)。

3.1 git add — 将文件放入暂存区

1
git add 文件名

效果:将文件从工作区→暂存区。可以多次 add 再一次性 commit

3.2 git status — 查看暂存区有哪些内容

1
git status

效果:绿色部分显示的是已暂存(staged)的修改,红色部分显示的是工作区有改动但还没暂存的内容。

3.3 git diff --staged — 查看暂存区中的改动

1
git diff --staged        # 或 git diff --cached

效果:显示暂存区中已经 add 但还未 commit 的改动内容。

3.4 git restore --staged <file> — 从暂存区移出

如果你不小心把文件 add 进了暂存区,想把它移出来又不影响工作区的修改:

1
2
git restore --staged 文件名   # 新版写法(推荐)
git reset HEAD 文件名 # 旧版写法

效果:将文件从暂存区移回工作区,文件本身的内容不会被修改。只是不再参与下一次提交。

3.5 git commit — 提交暂存区到本地仓库

把暂存区中的所有改动打包成一个”版本”,永久保存到本地仓库中。

1
git commit -m "提交说明"     # 带提交信息

效果:将暂存区的所有修改保存为一个新的提交(commit),生成一个唯一的提交 ID。每次提交都相当于项目的”历史快照”。

💡 好习惯:提交信息要写清楚这次改了什么,方便以后翻看。

3.6 git commit --amend — 修改最近一次提交

如果刚提交完发现漏了文件,或者提交信息写错了:

1
2
git add 漏掉的文件
git commit --amend -m "修正后的提交说明"

效果:把当前暂存区的变更合并到最近一次提交中,同时可以修改提交信息。注意:如果已推送到远程仓库,慎用此命令。

3.7 git reset — 撤销提交

1
2
3
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 — 管理远程仓库地址

1
2
3
4
git remote -v                        # 查看当前有哪些远程仓库
git remote add origin 仓库地址 # 添加远程仓库,命名为 origin
git remote remove origin # 删除名为 origin 的远程仓库
git remote rename 旧名 新名 # 重命名远程仓库

效果origin 是远程仓库的默认名称,你可以理解为给远程仓库地址起了一个”别名”。

4.2 git clone — 克隆远程仓库

把远程仓库的代码完整地复制到本地。

1
2
git clone 仓库地址
git clone 仓库地址 自定义文件夹名

效果:在本地创建一个新文件夹,里面包含了远程仓库的所有文件和历史记录,并且自动配置好了远程仓库地址。

4.3 git push — 推送本地提交到远程仓库

把你本地的提交上传到远程仓库,让别人能看到你的代码。

1
2
3
git push origin main                 # 将本地 main 分支推送到 origin 远程
git push -u origin main # 第一次推送时加上 -u,建立追踪关系
git push --all # 推送所有本地分支

效果:将本地已有提交上传到远程仓库。-u 设置 upstream,后续可以直接用 git push 简写。

4.4 git pull — 拉取远程仓库更新

从远程仓库获取最新代码并自动合并到当前分支。

1
2
git pull origin main                 # 拉取 origin 的 main 分支并合并
git pull # 如果有追踪关系,直接简写

效果:等于 git fetch + git merge 两个操作。将远程的最新代码拉到本地并自动合并。

4.5 git fetch — 只获取更新,不自动合并

从远程仓库获取最新代码,但不会自动合并到你当前的工作中。

1
2
git fetch origin                     # 获取远程仓库的所有更新
git fetch origin main # 获取远程 main 分支的更新

效果:类似于”查看”一下远程仓库有没有新东西,但不会改变你的工作区。可以手动用 git mergegit rebase 来合并。

git fetch vs git pull

命令 做了什么 安全吗?
git fetch 只下载远程新数据,不改你的代码 ✅ 安全
git pull 下载远程数据 + 自动合并到你的代码 ⚠️ 可能有冲突

推荐做法:不确定时先用 git fetch 看看有什么更新,确认没问题后再 git merge

4.6 git merge — 合并分支

将另一个分支的修改合并到当前分支。

1
git merge 分支名                      # 把指定分支合并到当前分支

效果:把两个分支的工作成果合并在一起。如果 Git 无法自动合并,会提示”冲突”,需要手动解决。

4.7 git branch — 管理分支

1
2
3
4
git branch                           # 列出本地所有分支(*标记当前所在分支)
git branch 新分支名 # 创建一个新分支
git branch -d 分支名 # 删除一个分支
git branch -r # 查看远程分支

效果:分支是 Git 的核心概念,让你可以同时开发不同功能互不干扰。

4.8 git checkout / git switch — 切换分支

1
2
3
git checkout 分支名                   # 切换到指定分支(旧版)
git switch 分支名 # 切换到指定分支(新版,推荐)
git switch -c 新分支名 # 创建并切换到新分支

效果:切换到其他分支,工作区的内容也会随之变为该分支的最新状态。

4.9 git log — 查看提交历史

1
2
3
4
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1. 初始化或克隆
git init # 或 git clone 远程地址

# 2. 在 工作区 里修改文件
# (用编辑器打开项目,改代码)

# 3. 查看当前状态
git status

# 4. 将修改 添加到暂存区
git add .

# 5. 提交到 本地仓库
git commit -m "完成了某某功能"

# 6. 推送到 远程仓库
git push origin main

写给初学者的几句话:

  • 不要怕犯错,Git 的大部分操作都是可逆的。
  • 多敲 git statusgit log,它们是你最好的”导航仪”。
  • 提交时写清楚说明,将来的你会感谢现在的自己。
  • 在不确定后果的操作前(尤其是 --hard 参数),先备份或查阅资料。