主题
Git 学习计划
第一阶段:基础入门(1-2 天)
1. Git 概念与安装
- 什么是版本控制?为什么需要 Git?
- Git 与 SVN 等集中式版本控制的区别
- Git 的三个区域:工作区(Working Directory)、暂存区(Staging Area)、本地仓库(Repository)
- 安装与初始配置:
git config
2. 基本操作
git init— 初始化仓库git clone— 克隆远程仓库git add— 将文件添加到暂存区git commit— 提交更改git status— 查看当前状态git log— 查看提交历史git diff— 查看差异.gitignore— 忽略文件配置
第二阶段:分支管理(2-3 天)
3. 分支基础
git branch— 创建、查看、删除分支git checkout/git switch— 切换分支git merge— 合并分支- 快速合并(Fast-forward)与三方合并(3-way merge)
- 合并冲突的产生与解决
4. 分支策略
- Git Flow 工作流
- GitHub Flow 工作流
- Trunk-Based Development
- 功能分支(Feature Branch)的最佳实践
第三阶段:远程协作(2-3 天)
5. 远程仓库操作
git remote— 管理远程仓库git push— 推送到远程git pull— 拉取并合并git fetch— 仅拉取不合并git pullvsgit fetch+git merge的区别- 上游分支(upstream)的设置与跟踪
6. 协作实践
- Fork & Pull Request 工作流
- Code Review 流程
- 处理远程冲突
- 多人协作的注意事项
第四阶段:进阶操作(3-4 天)
7. 历史管理与回退
git reset— 重置提交(--soft/--mixed/--hard)git revert— 安全回退git checkout -- <file>— 撤销工作区修改git restore— 新版撤销命令git reflog— 找回丢失的提交
8. 变基与整理
git rebase— 变基操作git rebase -i— 交互式变基(合并/修改/删除提交)git rebasevsgit merge的选择git cherry-pick— 选择性合并提交git stash— 暂存未完成的工作
9. 标签管理
git tag— 创建轻量标签与附注标签- 标签的推送与删除
- 语义化版本(Semantic Versioning)与标签
第五阶段:高级技巧(2-3 天)
10. 子模块与子树
git submodule— 管理子项目git subtree— 子树合并- 两者的区别与适用场景
11. 高级调试与排查
git bisect— 二分法定位 Buggit blame— 逐行追溯修改记录git log高级用法(--graph、--oneline、--author、--since等)
12. Git 钩子(Hooks)
- 客户端钩子:
pre-commit、commit-msg、pre-push - 服务端钩子:
pre-receive、post-receive - 利用钩子实现自动化(代码检查、提交规范等)
第六阶段:工程化实践(2-3 天)
13. 提交规范
- Conventional Commits 规范
- commitlint 工具
- 自动生成 CHANGELOG
14. Git 与 CI/CD
- Git 在持续集成中的角色
- 基于分支/标签的自动部署
- GitHub Actions / GitLab CI 基础
15. 大型项目的 Git 实践
git lfs— 大文件存储- Monorepo 管理策略
- 仓库瘦身与清理(
git gc、git prune、BFG Cleaner)
学习资源
| 资源 | 类型 | 说明 |
|---|---|---|
| Pro Git | 书籍(免费) | 官方推荐,最全面的 Git 教程 |
| Learn Git Branching | 交互式教程 | 可视化学习 Git 分支操作 |
| Git 官方文档 | 文档 | 命令参考手册 |
| GitHub Skills | 实践课程 | GitHub 官方学习路径 |
| Oh Shit, Git!?! | 速查 | 常见问题的快速解决方案 |
学习建议
- 边学边练 — 每个概念都动手操作,不要只看不练
- 建立个人项目 — 用一个实际项目贯穿整个学习过程
- 画图理解 — 用图形化工具(如
git log --graph)理解分支和提交关系 - 犯错不怕 — Git 几乎所有操作都可以撤销,大胆尝试
- 总结笔记 — 记录常用命令和踩过的坑,形成自己的速查手册