学习目标:
- 理解 Git 的作用,并能说清它解决了什么问题
- 掌握 Git 的核心流程(工作区、暂存区、本地仓库、远程仓库)
- 熟练完成 add、commit、push、pull 等基础操作
- 学会处理常见的协作冲突与版本回退场景
- 理解分支的价值,并能完成基础分支管理操作
- 能在 IDEA 中完成常见 Git 操作
本章重点:
- Git 的三区模型与文件状态流转
- clone / status / add / commit / push / pull 的完整链路
- 冲突处理的步骤与常见误区
- reset / checkout / reflog 等“后悔药”的适用场景
- 分支管理与企业协作中的基本工作流
1. Git介绍
1.1 Git的诞生
Git 是由 Linus Torvalds(Linux之父)开发的第二个伟大作品。2005年,由于BitKeeper软件公司对Linux社区停止了免费使用权,Linus迫不得已自己开发了一个分布式版本控制工具。据说Linus花了两周时间用C语言写了一个分布式版本控制系统,这就是Git。一个月之内,Linux系统的源码已经由Git管理了。
1.2 什么是Git
Git 是一个版本控制工具,可以记录和追踪某个文件在某一个时刻的内容和状态。
Git的使用有点像一个"网盘",但这个网盘比网盘更高级——Git可以追踪"网盘"中文件的历史版本状态。
🔑 核心理解:Git 可以记录某个文件夹下的不同文件在不同时间节点的不同状态,并追踪这些文件产生的变化。
1.3 Git的特点
| 特点 | 说明 |
|---|---|
| 分布式 | 每个开发者本地都有完整的仓库副本 |
| 离线可用 | 大部分操作可以在本地完成,无需联网 |
| 可回退 | 可以随时回滚到任意历史版本 |
1.4 Git vs SVN 对比
| 对比项 | SVN(集中式) | Git(分布式) |
|---|---|---|
| 架构 | 中央服务器 + 客户端 | 每个节点都是完整仓库 |
| 网络依赖 | 提交、更新都需要联网 | 本地操作无需联网 |
| 数据安全 | 中央服务器挂掉有风险 | 每个节点都有完整备份 |
| 分支操作 | 分支是目录的拷贝,较重 | 轻量级分支,快速切换 |

💡 注意:学会了Git,SVN也会很容易上手,因为基本命令类似。
本章小结
本章核心概念:Git 的核心价值在于分布式、可追踪、可回退。它不只是“代码备份工具”,更是团队协作开发的基础设施。
你现在应该掌握:
- 能说清 Git 与 SVN 的核心差异
- 能解释 Git 为什么适合团队协作开发
- 能理解“版本控制”到底控制的是什么内容
2. Git安装
2.1 下载Git
- 官方下载地址:https://git-scm.com/downloads
- 国内镜像(下载更快):https://registry.npmmirror.com/binary.html?path=git-for-windows/

2.2 安装步骤
Windows系统直接傻瓜式安装即可,安装过程中注意以下几点:
- 选择编辑器:建议选择VS Code或Notepad++作为默认编辑器
- 调整PATH环境:选择"Git from the command line and also from 3rd-party software"
- HTTPS传输后端:选择OpenSSL库
- 行尾符转换:Windows用户建议选择"Checkout Windows-style, commit Unix-style line endings"
- 记住登录凭证:勾选让Windows记住登录凭证(方便后续操作)

2.3 验证安装
安装完成后,打开命令行验证:
git --version正常输出版本号(如 git version 2.40.0)表示安装成功。
本章小结
本章核心概念:Git 安装的关键不是“点完下一步”,而是安装后能立即使用,并知道如何验证环境是否可用。
你现在应该掌握:
- 能独立完成 Git 的基础安装
- 能通过
git --version验证安装结果 - 能说出安装过程中几个关键选项的意义
3. Git核心流程
3.1 Git工作区域
Git管理文件有三个核心区域:
┌─────────────────────────────────────────────────────────┐ │ Git工作流程 │ ├─────────────────────────────────────────────────────────┤ │ │ │ 工作区 (Working Directory) │ │ ├── 新建文件 ──────┐ │ │ ├── 修改文件 │ │ │ └── 删除文件 │ git add │ │ ▼ │ │ 暂存区 (Staging Area / Index) │ │ │ │ │ │ git commit │ │ ▼ │ │ 本地仓库 (Local Repository) │ │ │ │ │ │ git push │ │ ▼ │ │ 远程仓库 (Remote Repository) │ │ │ └─────────────────────────────────────────────────────────┘
三个区域详解:
| 区域 | 英文 | 说明 |
|---|---|---|
| 工作区 | Working Directory | 你电脑上实际看到的文件目录 |
| 暂存区 | Staging Area / Index | 临时存放修改的地方,.git/index |
| 本地仓库 | Local Repository | Git存储版本数据的地方,.git/目录 |
| 远程仓库 | Remote Repository | 如GitHub、Gitee等服务器上的仓库 |

3.2 文件状态流转
未追踪(Untracked) ──────► 已暂存(Staged) ──────► 已提交(Committed)
▲ │
│ │
└──── 修改后重新add ◄──┘本章小结
本章核心概念:Git 的核心流程本质上是“记录变化并生成版本”。只有变化进入暂存区并提交到仓库,才真正形成可追踪的版本历史。
你现在应该掌握:
- 能说清工作区、暂存区、本地仓库、远程仓库的关系
- 能画出
add → commit → push的完整流程 - 能解释为什么“改了文件不等于保存了版本”
4. Git基础命令
4.1 注册远程仓库平台
以Gitee(码云)为例,国内访问速度快:
- 访问 https://gitee.com 注册账号
- 注册时请记住:
- 用户名(推荐使用英文)
- 密码
- 手机号
- 邮箱(可以注册后自行设置)
⚠️ 重要:密码一定要牢记,后续push代码时需要验证。
4.2 创建远程仓库
登录Gitee后,点击右上角"+"号创建仓库:

创建时建议:
- 仓库名称使用英文
- 选择公开或私有(初学者建议公开)
- 勾选"初始化仓库"和"添加README.md"
- 勾选"添加.gitignore"(Java项目选Java模板)
4.3 git clone - 克隆仓库
将远程仓库下载到本地(首次使用必须操作):
# 方式1:下载远程仓库,本地创建同名文件夹
git clone https://gitee.com/common-zhou/test_50th.git
# 方式2:指定本地文件夹名称
git clone https://gitee.com/common-zhou/test_53th.git test_53th_local
# 方式3:克隆到当前目录的指定文件夹(文件夹必须为空或不存在)
git clone https://gitee.com/ciggar/test-40th.git dirName💡 提示:克隆后会自动创建
.git文件夹(Git元信息目录),不要手动修改或删除!
⚠️ 文件类型注意事项
Git管理文件版本,推荐使用文本文件:
- ✅
.txt、.md、.java、.xml等 - ❌ 避免使用
.docx、.pptx、.xlsx等二进制格式
Git对比文件变化是一行一行比较的,.docx等是压缩包格式,无法有效对比差异。
4.4 git status - 查看状态
查看工作区和暂存区的变化:
git status输出说明:
- 🔴 红色:工作区有变化(未添加到暂存区)
- 🟢 绿色:暂存区有变化(已add未commit)

简化输出(推荐日常使用):
git status -s
# 或
git status --short4.5 git add - 添加到暂存区
将工作区的变化提交到暂存区:
# 方式1:添加指定文件
git add filename.txt
git add src/Main.java
# 方式2:通配符添加
git add *.java # 所有.java文件
git add src/* # src目录下所有文件
git add src/**/*.java # src及其子目录下所有.java文件
# 方式3:添加所有变化(最常用)
git add .
# 方式4:交互式添加(选择性添加)
git add -i💡 实战建议:日常开发中,
git add .最常用,但要注意.gitignore的配置。
4.6 git commit - 提交到本地仓库
将暂存区的内容提交到本地仓库,生成一个版本:
# 基础提交
git commit -m "提交信息"
# 添加并提交(跳过git add)
git commit -am "提交信息"
# 修改最后一次提交(未push前)
git commit --amend -m "新的提交信息"⚠️ 首次提交配置
第一次commit前,必须设置用户名和邮箱:
# 方式1:命令行设置(推荐)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 方式2:直接编辑配置文件
# Windows: C:\Users\用户名\.gitconfig
# Linux/Mac: ~/.gitconfig配置文件内容示例:
[user]
name = stone
email = shitou@cskaoyan.com📝 提交信息规范
良好的提交信息应该一目了然:
# 推荐格式
git commit -m "功能描述 (issue编号)"
# 示例
git commit -m "修复用户登录bug (#123)"
git commit -m "添加HashMap练习代码"
git commit -m "优化数据库查询性能"
# ❌ 不好的示例
git commit -m "1"
git commit -m "abc"
git commit -m "修改"提交信息模板:
<type>(<scope>): <subject>
<body>
<footer>常用type:
feat:新功能fix:修复bugdocs:文档修改style:格式修改(不影响代码逻辑)refactor:重构test:测试相关
4.7 git push - 推送到远程
将本地仓库的所有变化推送到远程仓库:
# 推送到默认远程分支
git push
# 推送到指定远程仓库的指定分支
git push origin main
git push origin master
# 首次推送并建立追踪关系
git push -u origin main
⚠️ push重要说明
- 第一次push需要验证身份:输入用户名和密码(或Token)

- push不能指定单个文件,只能推送整个分支
- push的前提:本地仓库版本必须领先于远程仓库(或已合并远程更新)
4.8 git pull - 拉取更新
将远程仓库的最新变化拉取到本地:
git pull
🔄 pull的本质
git pull = git fetch + git merge
# 等价于
git fetch origin # 下载远程更新
git merge origin/main # 合并到当前分支💡 黄金法则:"落后就要pull"——当本地版本落后于远程时,必须先pull才能push。
4.9 git log - 查看历史
查看仓库的版本历史:
# 基础查看
git log
# 简化输出(推荐)
git log --oneline
# 图形化显示分支
git log --oneline --graph --all
# 查看最近n条
git log -5
# 查看指定文件的历史
git log -- filename.txt
本章小结
本章核心概念:Git 的基础命令不是孤立记忆的,而是围绕“查看状态、记录变化、同步远程、查看历史”这一整条操作链使用的。
你现在应该掌握:
- 能在真实仓库中完成 clone、status、add、commit、push、pull
- 能根据
git status判断当前文件处于什么状态 - 能用
git log --oneline快速查看版本历史
5. 协作开发与冲突处理
5.1 邀请成员加入仓库
无论是开源仓库还是私有仓库,只有仓库成员才能修改代码。
- 开源仓库:所有人可见,但只有成员可修改
- 私有仓库:只有指定成员可见和修改
添加成员步骤:

⚠️ 注意:Gitee私有仓库免费版只能添加5个管理员(含主账号)。如需添加更多成员,可将仓库设为公开。
5.2 冲突的产生
当多个开发者同时修改同一文件的同一部分时,就会产生冲突。
冲突产生场景:
开发者A 开发者B
│ │
├─修改file.txt─────────────┤
│ ├─修改file.txt
├─push成功───────────────┤
│ ├─push失败(冲突!)
│ ├─pull下来
│◄─────────────────────────┤
│ 冲突产生 │💡 冲突处理黄金法则
- 先push的人不处理冲突,后push的人处理冲突
- 尽量避免多人同时修改同一文件
- push之前先pull,防止push失败
- 工作习惯:
- ☀️ 早上上班第一件事:pull最新代码
- 🌙 晚上下班最后一件事:push本地代码(确保能编译通过)
5.3 冲突处理实战
模拟冲突场景

冲突文件示例
当发生冲突时,Git会在文件中标记冲突内容:
<<<<<<<< HEAD
// 你的本地代码
System.out.println("我的版本");
================
// 远程仓库的代码
System.out.println("同事的版本");
>>>>>>>> a3f8b2c标记说明:
<<<<<<< HEAD到=======:你的本地代码=======到>>>>>>> a3f8b2c:远程的代码(commit hash)
冲突处理步骤
# 1. 执行pull,Git会自动合并,发生冲突时标记冲突文件
git pull
# 2. 手动编辑冲突文件,决定保留哪些代码
# - 保留你的代码?删除远程部分
# - 保留同事的代码?删除你的部分
# - 两者都要?合并修改
# 3. 删除冲突标记(<<<<<<< ======= >>>>>>>)
# 4. 保存文件后,添加到暂存区
git add .
# 5. 提交解决冲突的代码
git commit -m "解决与同事的代码冲突"
# 6. 尽快push,防止别人又push了新代码
git push本章小结
本章核心概念:协作开发的关键不是“完全没有冲突”,而是知道冲突为什么出现、如何定位、如何正确解决。
你现在应该掌握:
- 能说清冲突通常在什么场景下发生
- 能识别冲突标记并手动处理冲突内容
- 能理解“先 pull 再 push”在团队协作中的意义
6. 后悔药 - 版本回退
Git提供了多种"后悔药",可以在不同场景下回退操作。

6.1 git checkout - 撤销工作区修改
作用:用暂存区或仓库中的文件覆盖工作区的文件
# 撤销单个文件的修改
git checkout filename.txt
# 撤销所有文件的修改(危险操作!)
git checkout .⚠️ 危险警告:此操作会丢失工作区的所有修改,无法恢复,请谨慎使用!
适用场景:
- 写了一半发现思路错了,想回到修改前的状态
- 误删了文件,想从仓库恢复
6.2 git reset - 撤销暂存区
作用:将暂存区的变化回退到工作区(不会改变文件内容)
# 取消暂存区中指定文件
git reset HEAD filename.txt
# 取消所有暂存(保留工作区修改)
git reset HEAD .
# 或简写
git reset .适用场景:
git add错了文件,想重新选择- 想拆分一个大的commit为多个小的
6.3 git reset --hard - 彻底回退版本
作用:将当前分支重置到指定版本,会清除工作区和暂存区的所有更改
# 回退到指定commit(通过hash)
git reset --hard a3f8b2c
# 回退到上一个版本
git reset --hard HEAD^
# 回退到上n个版本
git reset --hard HEAD~3⚠️ 极度危险:此操作会丢失所有未提交的更改,请确保真的不需要这些更改!

找回丢失的commit:
# 查看所有操作记录
git reflog
# 恢复到之前的版本
git reset --hard <commit_hash>本章小结
本章核心概念:Git 的“后悔药”本质上是对不同区域和不同历史状态的回退操作,理解作用范围比死记命令更重要。
你现在应该掌握:
- 能区分 checkout、reset、reset --hard 的适用场景
- 能判断哪类操作只影响暂存区,哪类会影响工作区和历史版本
- 知道误操作后可以先尝试用 reflog 自救
7. 忽略文件 .gitignore
7.1 什么是.gitignore
Git可以配置忽略某些文件或目录,不追踪它们的变化。这在项目中非常重要,比如:
- IDE配置文件(
.idea/) - 编译生成的文件(
target/、*.class) - 依赖库(
node_modules/) - 敏感信息(配置文件含密码)
7.2 创建.gitignore
在Git仓库根目录创建.gitignore文件:
# 创建文件(Windows需要在命令行创建,因为文件名以点开头)
touch .gitignore7.3 Java项目常用.gitignore模板
# 编译输出
*.class
target/
build/
out/
# IDE配置
.idea/
*.iml
*.ipr
*.iws
.vscode/
*.project
*.classpath
.settings/
# 包文件
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar
# 日志
*.log
logs/
# 临时文件
*.tmp
*.temp
*.swp
*~
# 操作系统文件
.DS_Store
Thumbs.db
# Maven
.mvn/
# Gradle
.gradle/7.4 常用匹配规则
# 忽略单个文件
filename.txt
# 忽略目录
foldername/
# 忽略所有.class文件
*.class
# 不忽略某个特定的.class(取反)
!important.class
# 忽略target目录下的所有内容
target/*
# 忽略所有名为temp的目录
**/temp/7.5 ⚠️ 重要注意事项
- 尽早创建:
.gitignore最好在创建远程仓库时就配置好

- 已追踪文件无效:如果一个文件已经被追踪并提交到远程仓库,再在.gitignore中忽略是无效的
# 解决方案:先从仓库移除(保留本地文件)
git rm --cached filename
git commit -m "停止追踪某文件"本章小结
本章核心概念:.gitignore 的本质是“让 Git 不去追踪不该纳入版本管理的内容”,它是保持仓库整洁的重要规则文件。
你现在应该掌握:
- 知道
.gitignore应该放在仓库根目录 - 知道为什么越早配置越好
- 知道对已追踪文件,单纯写入
.gitignore并不会立即生效
8. Git分支管理
8.1 什么是分支
Git分支是版本控制中的重要概念,用于在同一仓库中独立开发多个功能。
分支的好处:
- 多人并行开发,互不干扰
- 新功能开发不影响主分支
- 可随时回退到之前的状态
- 支持版本发布和bug修复并行
分支类型:
- 主分支(master/main):稳定版本,用于发布
- 开发分支(dev):日常开发,合并新功能
- **功能分支(feature/*)**:开发特定功能
- **修复分支(hotfix/*)**:紧急修复线上bug
8.2 基础分支命令
# 查看本地分支
git branch
# 查看所有分支(含远程)
git branch -a
# 查看分支关系(追踪关系)
git branch -vv
# 创建新分支
git branch 分支名
# 创建并切换到新分支(常用)
git checkout -b 新分支名
# Git 2.23+ 推荐:
git switch -c 新分支名
# 切换分支
git checkout 分支名
# Git 2.23+ 推荐:
git switch 分支名
# 合并分支
git merge 被合并的分支名
# 删除分支
git branch -d 分支名 # 已合并的分支
git branch -D 分支名 # 强制删除8.3 分支工作流实战
典型企业分支模型
main (生产环境) │ ├── dev (开发环境) ◄──── 日常开发在这里 │ │ │ ├── feature/login 开发登录功能 │ ├── feature/payment 开发支付功能 │ └── feature/search 开发搜索功能 │ └── hotfix/bug-001 紧急修复线上bug
实战步骤
# 场景:从dev分支拉取新功能分支,开发完成后合并回dev
# 1. 切换到dev分支
git checkout dev
# 2. 拉取最新代码
git pull
# 3. 创建并切换到功能分支
git checkout -b feature/user-login
# 4. 开发代码,提交到本地
git add .
git commit -m "feat: 添加用户登录功能"
# 5. 开发完成,切换到dev分支
git checkout dev
# 6. 合并功能分支到dev
git merge feature/user-login
# 7. 推送dev到远程
git push origin dev
# 8. 删除已合并的功能分支
git branch -d feature/user-login8.4 本地分支与远程分支
# 查看所有分支(本地+远程)
git branch -a
# 推送本地分支到远程(首次)
git push origin 本地分支名
# 推送并建立追踪关系(推荐)
git push -u origin 本地分支名
# 查看分支追踪关系
git branch -vv
# 为已有本地分支建立与远程分支的追踪关系
git branch --set-upstream-to=origin/远程分支名 本地分支名
# 示例:本地dev分支追踪远程dev分支
git branch --set-upstream-to=origin/dev dev
# 检出远程分支到本地(创建本地分支并建立追踪)
git checkout -b dev origin/dev
# Git 2.23+ 推荐写法
git switch -c dev --track origin/dev本章小结
本章核心概念:分支的本质是“让多人并行开发互不干扰”,而不是为了把仓库结构弄复杂。好的分支策略能显著减少协作风险。
你现在应该掌握:
- 能说清 main / dev / feature / hotfix 的典型职责
- 能完成创建、切换、合并、删除分支的基础操作
- 能理解为什么企业开发通常不直接在主分支上改功能
9. 在IDEA中使用Git
9.1 配置Git路径
打开IDEA设置:File → Settings → Version Control → Git

设置Git可执行文件路径:
- Windows:
C:\Program Files\Git\bin\git.exe - Mac:
/usr/bin/git
点击"Test"按钮,显示版本号即配置成功。
9.2 项目颜色标识
如果项目被Git追踪,IDEA会用颜色标识文件状态:
| 颜色 | 含义 |
|---|---|
| 🔴 红色 | 新增文件,未追踪(Untracked) |
| 🔵 蓝色 | 文件有修改(Modified) |
| 🟢 绿色 | 已添加到暂存区(Staged) |
| ⚪ 白色/黑色 | 无变化,已提交 |

9.3 常用Git操作
右键菜单操作
在文件或项目上右键 → Git:
- Add:添加到暂存区(相当于
git add) - Commit:提交到本地仓库(相当于
git commit) - Push:推送到远程(相当于
git push) - Pull:拉取远程更新(相当于
git pull)
快捷键
| 操作 | Windows快捷键 |
|---|---|
| Commit | Ctrl + K |
| Push | Ctrl + Shift + K |
| Pull | Ctrl + T |
| 查看VCS操作 | Alt + ~ |
9.4 查看文件变动
在代码编辑器左侧,可以看到文件的变动标记:
- 绿色条:新增的行
- 蓝色条:修改的行
- 红色三角:删除的行
点击标记可以查看与上一版本的对比。
9.5 分支管理
底部状态栏点击分支名称,可以快速:
- 切换分支
- 创建新分支
- 合并分支
- 查看分支图
本章小结
本章核心概念:IDEA 中的 Git 操作,本质上只是把命令行操作做成了图形界面。理解底层逻辑后,再用 IDE 才不会“点着点着就懵了”。
你现在应该掌握:
- 能在 IDEA 中完成常见提交、拉取、推送操作
- 能看懂文件颜色提示对应的 Git 状态
- 能把 IDEA 中的操作和命令行命令对应起来
10. 常见问题与解决方案(FAQ)
Q1: 提交时提示"Please tell me who you are"
问题:
*** Please tell me who you are.
Run:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"解决:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"Q2: push时提示"failed to push some refs"
问题:
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://gitee.com/xxx/xxx.git'原因:远程仓库有更新,本地落后于远程。
解决:
# 先拉取远程更新
git pull
# 处理可能的冲突后,再push
git pushQ3: 忘记添加.gitignore,已经提交了不该提交的文件
解决:
# 1. 添加.gitignore文件(包含要忽略的文件)
# 2. 从仓库中移除文件,但保留本地文件
git rm --cached filename
# 3. 如果是目录
git rm -r --cached foldername
# 4. 提交更改
git add .
git commit -m "添加.gitignore,停止追踪某些文件"Q4: 误删了文件(未commit),如何恢复
解决:
# 恢复工作区文件(从暂存区或仓库恢复)
git checkout -- 文件名
# 恢复所有文件
git checkout .Q5: 误删了文件(已commit),如何恢复
解决:
# 查看文件历史
git log -- 文件名
# 恢复到指定版本
git checkout <commit_hash> -- 文件名
# 或
git restore --source=<commit_hash> -- 文件名Q6: commit信息写错了,如何修改
解决:
# 修改最后一次commit信息(未push时)
git commit --amend -m "新的提交信息"
# 修改最后一次commit,添加漏掉的文件
git add 漏掉的文件
git commit --amend --no-editQ7: 如何查看某个文件是谁修改的
解决:
# 查看文件的修改历史
git blame 文件名
# 查看详细修改内容
git log -p -- 文件名Q8: Windows和Mac换行符不一致导致的问题
问题:Windows使用CRLF(\r\n),Mac/Linux使用LF(\n),混用会导致diff显示整行变更。
解决:
# Windows用户配置(提交时自动转换)
git config --global core.autocrlf true
# Mac/Linux用户配置
git config --global core.autocrlf input
# 关闭自动转换(不推荐)
git config --global core.autocrlf falseQ9: 大文件误提交到仓库
问题:Git不适合管理大文件,会导致仓库臃肿。
解决:
# 从历史中彻底删除大文件(慎用,会重写历史)
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch 大文件名' \
--prune-empty --tag-name-filter cat -- --all或使用BFG Repo-Cleaner工具:
bfg --delete-files 大文件名Q10: GitHub/Gitee连接超时或失败
解决:
# 设置代理(如果有)
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy https://127.0.0.1:7890
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
# 使用SSH协议替代HTTPS(更稳定)
# 将 https://github.com/xxx/xxx.git
# 改为 git@github.com:xxx/xxx.git11. 学习建议
入门建议
- 先学命令行,再学IDE:命令行让你理解Git的本质,IDE只是提高效率
- 多练习:把日常代码都用Git管理起来
- 养成好习惯:
- 早pull晚push
- commit信息写清楚
- 不要提交不该提交的文件(.gitignore很重要)
进阶学习
- 推荐阅读:《Pro Git》(官方中文文档,免费)
- 学习Git内部原理(blob、tree、commit对象)
- 掌握Git高级特性(rebase、cherry-pick、stash等)
企业实践
- 熟悉公司的Git工作流(Git Flow / GitHub Flow / Trunk-Based)
- 理解Code Review流程
- 掌握CI/CD与Git的集成
学习建议
学完本章后,你至少应该做到
- 能独立完成一次
clone → 修改 → add → commit → push的完整流程 - 能解释工作区、暂存区、本地仓库、远程仓库之间的关系
- 遇到 push 失败时,知道先判断是否需要 pull 或处理冲突
- 能说清
checkout、reset、reset --hard的区别与风险 - 能在简单协作场景中使用分支完成开发与合并
复习优先级建议
- 先记流程:先把 Git 的核心链路记牢
- 再练命令:常用命令要做到能不看资料写出来
- 最后补细节:如配置、IDEA 操作、FAQ、企业分支模型
附录:Git命令速查表
基础命令
| 命令 | 作用 |
|---|---|
git init |
初始化仓库 |
git clone <url> |
克隆远程仓库 |
git status |
查看状态 |
git add <file> |
添加到暂存区 |
git commit -m "msg" |
提交到本地仓库 |
git push |
推送到远程 |
git pull |
拉取远程更新 |
git log |
查看历史 |
分支命令
| 命令 | 作用 |
|---|---|
git branch |
查看分支 |
git branch <name> |
创建分支 |
git checkout <name> |
切换分支 |
git checkout -b <name> |
创建并切换 |
git merge <name> |
合并分支 |
git branch -d <name> |
删除分支 |
撤销命令
| 命令 | 作用 | 危险程度 |
|---|---|---|
git checkout -- <file> |
撤销工作区修改 | ⚠️ 高 |
git reset HEAD <file> |
撤销暂存区 | ✅ 低 |
git reset --hard <hash> |
回退版本 | ⚠️⚠️ 极高 |
git reflog |
查看操作历史 | ✅ 安全 |
📚 参考书籍:《Pro Git》 - Git官方中文文档,全面且免费