git
1. Git 介绍
1.1 什么是 Git
Git 是一个分布式版本控制系统,由 Linux 之父 Linus Torvalds 于 2005 年创建,用于跟踪文件的变化并协调多人共同开发项目。与传统的集中式版本控制系统(如 SVN)不同,Git 允许开发者在本地拥有完整的代码仓库,即使没有网络连接也能进行版本控制操作。
1.2 Git 的特点
- 分布式系统:每个开发者都拥有完整的代码仓库副本
- 高性能:Git 的设计注重速度和效率,即使处理大型项目也表现优异
- 数据完整性:Git 使用 SHA-1 哈希算法确保数据的完整性
- 分支管理:创建、合并分支操作轻量且快速
- 适应性强:支持各种开发工作流程
1.3 为什么使用 Git
- 可以跟踪代码的历史变更,了解谁在什么时候修改了什么内容
- 支持团队协作开发,多人同时进行开发而不互相干扰
- 可以回滚到之前的版本,便于错误恢复
- 支持代码分支管理,便于功能开发和实验
- 代码审查和质量控制
2. Git 的安装与配置
2.1 安装 Git
Windows:
- 从 Git 官网 下载安装包并运行
- 也可以通过 Chocolatey 包管理器安装:
choco install git
macOS:
- 通过 Homebrew 安装:
brew install git - 也可以从官网下载安装包
Linux:
- Debian/Ubuntu:
sudo apt-get install git - Fedora:
sudo dnf install git - CentOS:
sudo yum install git
2.2 基本配置
安装完成后,需要进行一些基本配置:
1 | # 设置用户名和邮箱 |
3. Git 的基本使用
3.1 创建仓库
1 | # 初始化新仓库 |
3.2 基本工作流程
Git 工作流程通常包括以下步骤:
- 修改文件(工作区)
- 添加修改到暂存区:
git add <文件名>或git add . - 提交修改到本地仓库:
git commit -m "提交信息" - 推送到远程仓库:
git push <远程仓库名> <分支名>
3.3 常用命令
1 | # 查看状态 |
4. Git 核心概念
4.1 工作区、暂存区与版本库
Git 管理的项目包含三个主要区域:
- 工作区(Working Directory):你实际编辑文件的地方
- 暂存区(Staging Area):临时存储你的改动
- 版本库(Repository):保存项目的元数据和对象数据库
工作流程:工作区 → 暂存区(git add)→ 版本库(git commit)
4.2 分支管理
分支是 Git 的核心特性之一,允许从主开发线分离出来进行独立工作。
1 | # 查看分支 |
4.3 远程仓库
远程仓库是托管在网络上的项目版本库,便于团队协作。
1 | # 查看远程仓库 |
4.4 合并与解决冲突
当多人修改同一文件时可能会产生冲突,需要手动解决。
1 | # 合并分支 |
4.5 标签管理
标签通常用于标记发布版本。
1 | # 列出标签 |
4.6 Git 重置与回滚
1 | # 回滚到指定提交 |
5. Git 高级特性
5.1 Git Stash
临时保存修改,便于切换分支或拉取代码。
1 | # 保存当前工作 |
5.2 Git Rebase
重新应用提交历史,使其更加简洁。
1 | # 变基操作 |
5.3 Git Cherry-pick
选择指定的提交应用到当前分支。
1 | git cherry-pick <提交ID> |
6. Git 最佳实践
1 | %% 标准 Git Flow 工作流图(带 commit message 规范) |
分支说明及命名规范
- master(main):生产环境主分支,每个稳定版本从这里发布并打 tag
- develop:开发主分支,只做合并操作
- feature/xxx(功能名称)/xxx(更细粒度特性):新功能开发,从 develop 拉出,开发完成后合并回 develop 分支
- release/xxx(版本号):预发布阶段,做文档补全、测试与修复,完成后合并回入 master 并同步到 develop 分支
- hotfix/xxx(版本号):线上紧急修复,从 master 拉出,修完后合并回 master 并同步至 develop 分支
commit 命名规范
- header:<type>(<scope>): <subject>,简短概述本次提交做了什么
- type:提交类型
- scope:作用范围,可选,但推荐使用模块名、功能名。
- subject:简洁说明修改内容,尽量使用动词原形。
- body(可选):详细说明本次提交的原因、实现思路、注意事项
提交类型
常见类型:
| Type | 说明 | 示例 |
|---|---|---|
| feat | 新功能 | feat(login): 添加登录页面 |
| fix | 修复 bug | fix(cart): 修复购物车折扣显示错误 |
| docs | 文档变更 | docs(api): 更新订单接口文档 |
| style | 代码风格修改,不影响功能 | style(login): 调整表单缩进 |
| refactor | 重构代码,既不新增功能也不修复 bug | refactor(order): 优化订单列表渲染逻辑 |
| perf | 性能优化 | perf(cart): 改进购物车计算效率 |
| test | 添加或修改测试代码 | test(login): 添加登录单元测试 |
| chore | 构建、工具或杂项修改,不影响源代码 | chore(ci): 更新 CI 配置 |
| build | 构建系统相关修改(如 package.json、Gradle) | build(deps): 升级依赖库版本 |
| ci | 持续集成相关配置修改 | ci(travis): 修复 CI 流程 |
| revert | 回滚之前的提交 | revert: feat(login): 添加登录页面 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AnA!
评论







