跳转到内容

Git 版本控制基础

Git 版本控制基础

Git 是当今最流行的分布式版本控制系统,在 IoT 开发中用于管理固件代码、硬件设计文件和项目文档。本节将系统性地介绍 Git 的核心概念与基本操作,帮助读者快速上手版本控制。

Git 的三个工作区域:

工作目录(Working Directory) → 暂存区(Staging Area) → 本地仓库(Local Repository)
git add git commit
  • 工作目录:你正在编辑的文件
  • 暂存区:准备提交的变更集合
  • 本地仓库:Git 存储所有历史版本的地方
Terminal window
# 在本地初始化一个新仓库
git init
# 克隆一个已有的远程仓库
git clone https://github.com/your-org/iot-project.git

日常开发三部曲:Add → Commit → Push

Section titled “日常开发三部曲:Add → Commit → Push”
Terminal window
# 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: 构建/工具变更
Terminal window
# 查看提交历史
git log
git log --oneline # 简洁模式
git log --graph # 图形化查看分支
# 查看未暂存的变更
git diff
# 查看已暂存的变更
git diff --cached
Terminal window
# 拉取远程最新代码并合并到当前分支
git pull origin main
# 拉取但不合并(方便先查看差异)
git fetch origin
git log origin/main..HEAD # 查看本地领先了哪些提交
git merge origin/main # 确认后合并

分支让团队可以并行开发互不干扰。

Terminal window
# 查看所有分支(* 表示当前所在分支)
git branch
# 创建新分支
git branch feature/temperature-sensor
# 切换分支
git checkout feature/temperature-sensor
# 创建并切换(一步完成)
git checkout -b feature/humidity-sensor
# 删除分支(合并后清理)
git branch -d feature/temperature-sensor

团队常用的 Git Flow 简化版结构:

main ────────●────────────●────────
\ /
feature/xyz ●──●──●──●
\
fix/abc ●──●
  • main:稳定可发布的主分支
  • feature/*:功能开发分支,完成后合并回 main
  • fix/*:Bug 修复分支
  • 开发完成后通过 Pull Request 合并
Terminal window
# 将 feature 分支合并到当前分支
git merge feature/temperature-sensor
# 变基(保持线性历史,适合个人分支)
git checkout feature/temperature-sensor
git rebase main

当两个分支修改了同一文件的同一区域时,Git 会产生冲突:

Terminal window
# 冲突标记示例
<<<<<<< HEAD
Serial.println("Temperature: 25.5°C");
=======
Serial.println("Temperature: 26.3°C");
>>>>>>> feature/calibration
# 解决冲突:编辑文件,保留正确版本,删除标记
Serial.println("Temperature: 26.3°C"); # 采用校准后的值
# 标记冲突已解决并提交
git add sensor.cpp
git commit -m "fix: 解决温度校准值冲突"
Terminal window
# 添加远程仓库
git remote add origin https://github.com/your-org/iot-project.git
# 查看远程仓库
git remote -v
Terminal window
# 推送本地分支到远程
git push origin feature/temperature-sensor
# 在 GitHub/GitLab 上创建 PR,描述中应包含:
# - 改动摘要
# - 关联的 Issue 编号
# - 测试方法
# - 影响范围

在 IoT 项目中,以下文件不应纳入版本控制:

Terminal window
# 编译产物
build/
cmake-build-*/
*.o
*.elf
*.bin
*.hex
# IDE 配置
.vscode/
.idea/
*.swp
*.swo
# 环境配置(不提交密钥)
.env
*.env.local
# 系统文件
.DS_Store
Thumbs.db
# Python 缓存
__pycache__/
*.pyc

创建 .gitignore 后记得提交:

Terminal window
git add .gitignore
git commit -m "chore: 添加 .gitignore"
Terminal window
# 撤销工作目录的修改(谨慎使用)
git checkout -- main.c
# 从暂存区撤回
git reset HEAD main.c
# 修改最近一次提交信息
git commit --amend -m "新提交信息"
# 回退到某个提交(不保留历史)
git reset --hard <commit-hash>
# 回退到某个提交(保留变更在工作目录)
git reset --soft <commit-hash>
命令用途常用参数
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 定制设计与制造服务。从原型到量产——编写这套教程的团队,可以和你一起实现。

联系我们 →