Git 学习手册
目录
- Git 简介
- Git 工作流程
- 安装与配置
- 基础操作
- 分支管理
- 远程仓库
- 团队协作
- 前端开发常用场景
- 常见问题
1. Git 简介
1.1 什么是 Git
Git 是一个分布式版本控制系统,用于跟踪文件的变化,方便多人协作开发。
1.2 核心特点
| 特点 | 说明 |
|---|
| 分布式 | 每个开发者都有完整的仓库副本 |
| 速度快 | 本地操作,无需网络 |
| 分支友好 | 创建、切换分支成本极低 |
| 安全性高 | SHA-1 哈希校验 |
1.3 Git vs SVN
| 对比项 | Git | SVN |
|---|
| 架构 | 分布式 | 集中式 |
| 本地操作 | 支持 | 不支持 |
| 分支 | 轻量级 | 重量级 |
| 离线工作 | 支持 | 不支持 |
2. Git 工作流程

2.1 四个区域
┌─────────────┐ add ┌──────────────┐ commit ┌──────────────────┐
│ workspace │ ────────> │ staging area │ ───────────> │ local repository │
│ (工作区) │ │ (暂存区) │ │ (本地仓库) │
└─────────────┘ └──────────────┘ └────────┬─────────┘
^ │
│ checkout │ push
│ │
│ ┌──────────────────┐ fetch/clone ┌──────────▼──────────┐
└─── │ local repository │ <──────────────── │ remote repository │
└──────────────────┘ │ (远程仓库) │
└─────────────────────┘
2.2 区域说明
| 区域 | 说明 | 对应文件 |
|---|
| 工作区 | 电脑上实际修改的文件 | 项目文件 |
| 暂存区 | 准备提交的文件快照 | .git/index |
| 本地仓库 | 保存所有提交记录 | .git/ 目录 |
| 远程仓库 | 服务器上的仓库 | GitHub/GitLab |
2.3 文件状态
在Git中,文件可以处于四种基本状态:未跟踪(Untracked) 、未修改(Unmodified) 、已修改(Modified) 和 已暂存(Staged)。这些状态反映了文件在工作区、暂存区和版本库之间的转换过程
┌──────────┐ git add ┌──────────┐ git commit ┌──────────┐
│ untrack │ ───────────────> │ staged │ ──────────────────> │ committed│
│ (未跟踪) │ │ (已暂存) │ │ (已提交) │
└──────────┘ └──────────┘ └──────────┘
│
│ git checkout
▼
┌──────────┐
│ modified │
│ (已修改) │
└──────────┘
3. 安装与配置
3.1 安装
# macOS
brew install git
# Windows
# 下载安装包: https://git-scm.com/?hl=zh-cn
# 验证安装
git --version

3.2 配置用户信息
# 配置用户名和邮箱(首次使用必须配置)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"
# 查看配置
git config --list
3.3 配置别名(可选但推荐)
# 配置常用别名
git config --global alias.st status
git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.logg "log --oneline --graph --all"
3.4 配置编辑器
# 使用 VS Code 作为默认编辑器
git config --global core.editor "code --wait"
4. 基础操作
4.1 初始化仓库
git init
git clone <仓库地址>
git clone -b <分支名> <仓库地址>

4.2 查看状态
git status
git status -s
4.3 添加文件到暂存区
# 添加单个文件
git add <文件名>
# 添加所有文件
git add .
# 添加指定类型文件
git add *.js
# 添加目录
git add src/
# 交互式添加(可选择具体修改)
git add -i
4.4 提交
git commit
git commit -m "提交消息"
git commit -a -m "提交消息"
git commit --amend -m "新的提交消息"
4.5 查看提交历史
git log
git log --oneline
git log --oneline --graph
git log <文件名>
git log -n 5
git show <提交ID>
4.6 撤销操作
git checkout -- <文件名>
git reset HEAD <文件名>
git reset --soft HEAD~1
git reset --hard HEAD~1
git checkout HEAD -- <文件名>
4.7 暂存操作
git stash
git stash list
git stash pop
git stash apply stash@{0}
git stash drop stash@{0}
git stash clear
5. 分支管理
5.1 分支概念
main ──────┬─────┬─────>
│ │
feature/login bugfix/issue-123
5.2 常用分支命令
git branch -a
git branch <分支名>
git checkout -b <分支名>
git checkout <分支名>
git branch -d <分支名>
git branch -D <分支名>
git push origin --delete <分支名>
5.3 合并分支
# 切换到目标分支
git checkout main
# 合并指定分支
git merge <分支名>
# 查看合并冲突
git status
# 解决冲突后提交
git add .
git commit -m "合并分支"
5.4 分支策略
Git Flow(传统)
main ──────────────────────────────────────────────>
│ │ │ │
v v v v
develop ──────────────────────────────────────>
│ │ │
v v v
feature/xxx release/1.0 hotfix/xxx
| 分支 | 用途 |
|---|
main | 生产环境代码 |
develop | 开发分支 |
feature/* | 功能开发 |
release/* | 版本发布 |
hotfix/* | 紧急修复 |
Trunk-Based Development(现代)
main ──────────────────────────────────────────────>
│ │ │ │
v v v v
feature/xxx feature/yyy feature/zzz
GitHub Flow(简单)
main ──────────────────────────────────────────────>
│ │ │
v v v
feature/xxx bugfix/yyy docs/zzz
6. 远程仓库
6.1 添加远程仓库
# 添加远程仓库
git remote add origin <仓库地址>
# 查看远程仓库
git remote -v
# 修改远程仓库地址
git remote set-url origin <新地址>
# 删除远程仓库
git remote remove origin
6.2 推送与拉取
git push -u origin <分支名>
git push
git fetch
git pull
git push --force
6.3 同步远程分支
git fetch origin
git checkout -b <本地分支名> origin/<远程分支名>
git remote prune origin
7. 团队协作
7.1 协作流程
1. 克隆仓库
git clone <仓库地址>
2. 创建功能分支
git checkout -b feature/user-login
3. 开发代码
# 编写代码...
4. 提交代码
git add .
git commit -m "feat: 添加用户登录功能"
5. 拉取最新代码(避免冲突)
git pull origin main
6. 推送分支
git push -u origin feature/user-login
7. 创建 Pull Request / Merge Request
8. 代码审查通过后合并
7.2 代码审查规范
feat(auth): 添加用户登录功能
fix(api): 修复接口超时问题
docs(readme): 更新项目文档
style(css): 优化样式代码
refactor(utils): 重构工具函数
test(login): 添加登录测试用例
chore(deps): 更新依赖版本
7.3 冲突解决
# 当 git pull 出现冲突时
# 1. 查看冲突文件
git status
# 2. 打开冲突文件,手动解决冲突
<<<<<<< HEAD
我的代码
=======
对方的代码
>>>>>>> feature/xxx
# 3. 标记冲突已解决
git add <文件名>
# 4. 提交合并结果
git commit -m "合并冲突"
8. 前端开发常用场景
8.1 创建新项目
mkdir my-project
cd my-project
git init
echo "# My Project" > README.md
touch .gitignore
touch index.html
git add .
git commit -m "init: 初始化项目"
git remote add origin <仓库地址>
git push -u origin main
8.2 开发功能
git checkout -b feature/add-component
git add src/components/Button.jsx
git commit -m "feat: 创建 Button 组件"
git add src/components/Modal.jsx
git commit -m "feat: 创建 Modal 组件"
git push -u origin feature/add-component
8.3 处理构建产物
node_modules/
dist/
build/
.env
.env.local
.DS_Store
*.log
8.4 版本发布
git tag v1.0.0
git push origin v1.0.0
git tag
git tag -d v1.0.0
git push origin :v1.0.0
8.5 回滚到指定版本
git log --oneline
git revert <提交ID>
git reset --hard <提交ID>
git push --force
9. 常见问题
9.1 忘记提交就切换分支
# 方法1: 暂存当前修改
git stash
git checkout <分支名>
git stash pop
# 方法2: 提交当前修改
git add .
git commit -m "temp: 临时提交"
git checkout <分支名>
9.2 误删分支
git reflog
git checkout -b <分支名> <提交ID>
9.3 提交信息写错
git commit --amend -m "正确的提交信息"
git push --force
9.4 强制覆盖本地代码
git fetch origin
git reset --hard origin/main
9.5 查看某个文件的修改历史
git log <文件名>
git log -p <文件名>
git show HEAD -- <文件名>
附录:常用命令速查
| 命令 | 说明 |
|---|
git init | 初始化仓库 |
git clone <url> | 克隆仓库 |
git status | 查看状态 |
git add <file> | 添加到暂存区 |
git commit -m <msg> | 提交 |
git log | 查看提交历史 |
git branch | 管理分支 |
git checkout <branch> | 切换分支 |
git merge <branch> | 合并分支 |
git push | 推送到远程 |
git pull | 拉取远程代码 |
git stash | 暂存修改 |
git reset | 重置提交 |
git revert | 回滚提交 |
学习建议:先掌握基础操作,再学习分支管理和团队协作。多实践,遇到问题不要害怕,Git 几乎所有操作都可以撤销!