|
Git 在硬件项目中的使用:原理图/PCB 版本管理实战指南

Git 在硬件项目中的使用:原理图/PCB 版本管理实战指南

为什么硬件项目也需要 Git?

做软件的朋友可能无法理解:硬件设计不就是画个图、布个板子吗?要什么版本控制?

直到有一天,你改了个电阻值,发现板子不工作了,想回退却找不到原来的文件;或者团队协作时,两个人同时改了原理图,最后不知道用谁的版本……

这时候你就明白了:硬件设计也是代码,也需要版本管理。

今天我们就来聊聊,如何用 Git 管理硬件项目,特别是 KiCad、Eagle 这些 EDA 工具生成的文件。

需要准备什么?

物品型号/规格价格
电脑任意 Linux/Mac/Windows已有
EDA 工具KiCad 7.x(推荐)免费
Git2.x 以上版本免费
代码托管GitHub/Gitee免费
总计¥0

是的,这套工具链完全免费!KiCad 是开源 EDA 工具,Git 也是开源的,GitHub 个人仓库免费。

步骤 1:Git 基础配置

首先安装 Git(如果还没装):

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install git

# macOS
brew install git

# Windows
# 下载 https://git-scm.com/download/win

配置你的身份信息:

git config --global user.name \"Your Name\"
git config --global user.email \"your.email@example.com\"

# 推荐:设置默认分支为 main
git config --global init.defaultBranch main

# 推荐:启用彩色输出
git config --global color.ui auto

步骤 2:硬件项目的 Git 结构

硬件项目和软件项目有个很大的不同:有很多二进制文件(Gerber、PDF、3D 模型等)。这些文件不适合做差异比较,但需要版本追踪。

推荐的项目结构:

my-hardware-project/
├── .gitignore          # Git 忽略文件配置
├── README.md           # 项目说明
├── docs/               # 文档
│   ├── BOM.md          # 物料清单
│   └── assembly.md     # 组装说明
├── hardware/           # 硬件设计文件
│   ├── schematic/      # 原理图
│   │   └── project.kicad_sch
│   ├── pcb/            # PCB 布局
│   │   └── project.kicad_pcb
│   └── lib/            # 元件库
├── firmware/           # 固件代码
│   └── src/
├── gerber/             # 生成的 Gerber 文件
└── 3d-models/          # 3D 模型文件

步骤 3:编写 .gitignore

这是最关键的一步!EDA 工具会生成很多临时文件和备份文件,我们不需要追踪它们。

KiCad 项目的 .gitignore 示例:

# KiCad 自动生成的备份文件
*-backup.kicad_sch
*-backup.kicad_pcb
*.kicad_sch-bak
*.kicad_pcb-bak

# KiCad 缓存和临时文件
cache/
tmp/
*.cache

# 自动生成的输出文件(可选,看团队需求)
gerber/
production/
*.pdf
*.step
*.wrl

# 编辑器临时文件
.vscode/
.idea/
*.swp
*.swo
*~

# 操作系统文件
.DS_Store
Thumbs.db

注意: Gerber 文件是否纳入版本控制,取决于你的团队策略。如果每次提交都包含 Gerber,仓库会变大;如果不包含,每次发布需要重新生成。我的建议是:开发阶段不提交 Gerber,发布标签(tag)时生成并附带

步骤 4:初始化仓库并提交

# 创建项目目录
mkdir my-hardware-project
cd my-hardware-project

# 初始化 Git 仓库
git init

# 创建 .gitignore
cat > .gitignore  README.md 100mV)

差的示例:

更新 PCB

步骤 6:处理二进制文件

KiCad 的 .kicad_pcb 文件本质上是文本格式(S-表达式),可以做差异比较。但有些文件是纯二进制的(如 3D 模型、图片)。

查看 PCB 文件差异

# KiCad PCB 文件可以用 git diff 直接查看
git diff hardware/pcb/project.kicad_pcb

# 输出示例:
- (segment (start 100 100) (end 150 100) (width 0.25) (layer \"F.Cu\"))
+ (segment (start 100 100) (end 150 100) (width 0.5) (layer \"F.Cu\"))

可以看到线宽从 0.25mm 改成了 0.5mm。

二进制文件的 Git LFS 支持

如果项目有很多大文件(3D 模型、高清图片),建议使用 Git LFS:

# 安装 Git LFS
git lfs install

# 追踪大文件类型
git lfs track \"*.step\"
git lfs track \"*.wrl\"
git lfs track \"*.png\"

# 这会修改 .gitattributes 文件
git add .gitattributes
git commit -m \"配置 Git LFS 追踪 3D 模型和图片\"

注意: GitHub 免费账户 LFS 有 1GB 配额,超出需要付费。

步骤 7:团队协作与代码审查

使用 Pull Request/Merge Request

  1. 在 GitHub/Gitee 上创建团队仓库,设定分支保护规则(如 main 分支禁止直接 push)

  2. 成员从 main 拉出 feature 分支进行开发,完成后发起 Pull Request

  3. 指定至少一位团队成员进行代码审查,重点关注原理图变更和 PCB 走线改动

  4. 合并前解决所有 review 意见,确保 KiCad 文件可正常打开

  5. 合并后删除 feature 分支,保持仓库整洁

KiCad 可以导出原理图为 PDF 用于审查:

# 导出原理图 PDF
kicad-cli sch export pdf \\
  -o docs/schematic-v1.2.pdf \\
  hardware/schematic/project.kicad_sch

# 将 PDF 附加到 PR 描述中供审查

或者使用 KiCad 的”比较原理图”功能,可视化查看两个版本的差异。

常见问题排查

问题 1:KiCad 文件提交后无法打开

  • 原因: 可能是文件编码问题或未完整提交

  • 解决: 确保 .kicad_sch.kicad_pcb 文件完整提交,不要拆分;使用 git lfs 追踪大文件

问题 2:合并冲突怎么处理?

  • 原因: 两个人同时修改了同一个文件

  • 解决:

用文本编辑器打开冲突文件

  • 找到 >>>>>> 标记

  • 手动选择保留的变更

  • 在 KiCad 中打开验证

  • 提交解决后的文件

  • 预防: 团队成员分工明确,避免同时修改同一模块

问题 3:仓库太大怎么办?

  • 原因: 提交了太多大文件或历史版本累积

解决:

# 检查仓库大小
git count-objects -vH

# 清理未引用的对象
git gc --prune=now

# 如果 Gerber 等输出文件太大,从历史中移除
git filter-branch --tree-filter \'rm -rf gerber/\' HEAD

问题 4:如何回退到之前的版本?

解决:

# 查看历史提交
git log --oneline

# 回退到某个提交(保留工作区变更)
git checkout 

# 或者创建回退提交
git revert 

总结

用 Git 管理硬件项目的好处:

  1. 所有设计变更都有完整历史记录,随时可以回退到任意版本

  2. 团队协作不再冲突,每人一个分支,合并时再统一审查

  3. 提交信息记录设计决策原因,方便后续接手的人理解”为什么这样改”

  4. 通过 tag 标记每次发版的 Gerber 文件,生产时直接取用

  5. 利用 PR/MR 机制做设计审查,减少低级错误流入生产

  • 写清楚 .gitignore,避免提交临时文件

  • 提交信息要详细,说明”改了什么”和”为什么改”

  • 大文件用 Git LFS 管理

  • Gerber 等输出文件在发布时生成,用 tag 标记

  • 定期 git gc 清理仓库

希望这篇博客文章对您有所帮助!


相关资源:

  • Git 官方文档

  • KiCad 版本控制最佳实践

  • Git LFS 使用指南

  • GitHub 硬件项目示例