Git 版本控制基础
Git 版本控制基础
Git 是当今最流行的分布式版本控制系统,在 IoT 开发中用于管理固件代码、硬件设计文件和项目文档。本节将系统性地介绍 Git 的核心概念与基本操作,帮助读者快速上手版本控制。
Git 核心概念
Section titled “Git 核心概念”Git 的三个工作区域:
工作目录(Working Directory) → 暂存区(Staging Area) → 本地仓库(Local Repository) git add git commit- 工作目录:你正在编辑的文件
- 暂存区:准备提交的变更集合
- 本地仓库:Git 存储所有历史版本的地方
Git 基础工作流
Section titled “Git 基础工作流”初始化与克隆
Section titled “初始化与克隆”# 在本地初始化一个新仓库git init
# 克隆一个已有的远程仓库git clone https://github.com/your-org/iot-project.git日常开发三部曲:Add → Commit → Push
Section titled “日常开发三部曲:Add → Commit → Push”# 1. 查看当前状态git status
# 2. 将修改添加到暂存区git add main.c # 添加单个文件git add src/ # 添加整个目录git add -p # 交互式分段添加(推荐)
# 3. 提交到本地仓库git commit -m "feat: 添加 MQTT 连接重连机制"
# 4. 推送到远程仓库git push origin main提交信息规范:推荐使用 Conventional Commits 格式
feat:新功能fix:修复docs:文档变更refactor:重构test:测试chore:构建/工具变更
查看历史与差异
Section titled “查看历史与差异”# 查看提交历史git loggit log --oneline # 简洁模式git log --graph # 图形化查看分支
# 查看未暂存的变更git diff
# 查看已暂存的变更git diff --cached拉取远程更新
Section titled “拉取远程更新”# 拉取远程最新代码并合并到当前分支git pull origin main
# 拉取但不合并(方便先查看差异)git fetch origingit log origin/main..HEAD # 查看本地领先了哪些提交git merge origin/main # 确认后合并分支让团队可以并行开发互不干扰。
分支基础操作
Section titled “分支基础操作”# 查看所有分支(* 表示当前所在分支)git branch
# 创建新分支git branch feature/temperature-sensor
# 切换分支git checkout feature/temperature-sensor
# 创建并切换(一步完成)git checkout -b feature/humidity-sensor
# 删除分支(合并后清理)git branch -d feature/temperature-sensor常见分支策略
Section titled “常见分支策略”团队常用的 Git Flow 简化版结构:
main ────────●────────────●──────── \ /feature/xyz ●──●──●──● \fix/abc ●──●- main:稳定可发布的主分支
- feature/*:功能开发分支,完成后合并回 main
- fix/*:Bug 修复分支
- 开发完成后通过 Pull Request 合并
合并与冲突解决
Section titled “合并与冲突解决”# 将 feature 分支合并到当前分支git merge feature/temperature-sensor
# 变基(保持线性历史,适合个人分支)git checkout feature/temperature-sensorgit rebase main当两个分支修改了同一文件的同一区域时,Git 会产生冲突:
# 冲突标记示例<<<<<<< HEADSerial.println("Temperature: 25.5°C");=======Serial.println("Temperature: 26.3°C");>>>>>>> feature/calibration
# 解决冲突:编辑文件,保留正确版本,删除标记Serial.println("Temperature: 26.3°C"); # 采用校准后的值
# 标记冲突已解决并提交git add sensor.cppgit commit -m "fix: 解决温度校准值冲突"远程仓库协作
Section titled “远程仓库协作”添加远程仓库
Section titled “添加远程仓库”# 添加远程仓库git remote add origin https://github.com/your-org/iot-project.git
# 查看远程仓库git remote -vPull Request 协作流程
Section titled “Pull Request 协作流程”# 推送本地分支到远程git push origin feature/temperature-sensor
# 在 GitHub/GitLab 上创建 PR,描述中应包含:# - 改动摘要# - 关联的 Issue 编号# - 测试方法# - 影响范围.gitignore 配置
Section titled “.gitignore 配置”在 IoT 项目中,以下文件不应纳入版本控制:
# 编译产物build/cmake-build-*/*.o*.elf*.bin*.hex
# IDE 配置.vscode/.idea/*.swp*.swo
# 环境配置(不提交密钥).env*.env.local
# 系统文件.DS_StoreThumbs.db
# Python 缓存__pycache__/*.pyc创建 .gitignore 后记得提交:
git add .gitignoregit commit -m "chore: 添加 .gitignore"# 撤销工作目录的修改(谨慎使用)git checkout -- main.c
# 从暂存区撤回git reset HEAD main.c
# 修改最近一次提交信息git commit --amend -m "新提交信息"
# 回退到某个提交(不保留历史)git reset --hard <commit-hash>
# 回退到某个提交(保留变更在工作目录)git reset --soft <commit-hash>常用命令速查表
Section titled “常用命令速查表”| 命令 | 用途 | 常用参数 |
|---|---|---|
git init | 初始化仓库 | — |
git clone <url> | 克隆远程仓库 | --recursive(含子仓库) |
git status | 查看工作区状态 | -s(简洁模式) |
git add <file> | 暂存变更 | .(所有)、-p(交互式) |
git commit | 提交暂存区 | -m(信息)、--amend(修改上次提交) |
git push | 推送到远程 | origin main、--force(慎用) |
git pull | 拉取并合并 | --rebase(变基方式拉取) |
git branch | 管理分支 | -d(删除)、-a(所有分支) |
git checkout | 切换分支/文件 | -b(创建并切换) |
git merge <b> | 合并分支 | — |
git log | 查看历史 | --oneline、--graph |
git diff | 查看差异 | --cached(暂存区差异) |
下一步:掌握了 Git 基础操作后,下一节将介绍如何在 GitHub 上初始化项目仓库并配置团队协作环境。
正在开发商业 IoT 产品?
我们提供 ESP32 ODM 定制设计与制造服务。从原型到量产——编写这套教程的团队,可以和你一起实现。
联系我们 →