跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C

STM32 项目 Git 版本管理实战指南

STM32 嵌入式开发中利用 Git 进行版本控制能有效管理编译产物与源码。涵盖环境配置、.gitignore 规则制定、仓库初始化及日常提交推送流程,并整理了常见报错解决方案,帮助开发者建立规范的工程协作习惯。重点解决了网络代理、认证失败及文件冲突等实际问题。

asphyx_a发布于 2026/3/22更新于 2026/7/1838 浏览
STM32 项目 Git 版本管理实战指南

STM32 项目 Git 版本管理实战指南

对于嵌入式开发者来说,Git 不仅仅是代码备份工具,更是工程协作的基石。它能记录每次修改的历史,让你随时回退到任意版本,避免'改乱了找不到'的尴尬。

环境准备

首先确保本地已安装 Git for Windows(推荐使用 Git Bash),并拥有一个 GitHub 账号。如果网络受限,后续可能需要配置代理或使用 SSH 方式。

  1. 安装与配置 下载后一路默认安装即可。首次使用时只需配置一次用户信息:

    git config --global user.name "你的名字"
    git config --global user.email "你的邮箱"
    
  2. 创建远程仓库 登录 GitHub,点击右上角 + 选择 New repository。填写名称后点击创建,⚠️注意不要勾选任何初始化选项(如 README),否则会导致本地和远程冲突。复制仓库地址备用,格式通常为: https://github.com/用户名/仓库名.git

忽略文件配置

STM32 项目编译会产生大量中间文件(.axf、.o、.map 等),这些不需要上传。在项目根目录创建 .gitignore 文件,告诉 Git 忽略它们。

# ============================================
# MDK-ARM 编译产物
# ============================================
MDK-ARM/*/

# MDK 用户个人配置文件
MDK-ARM/*.uvguix.*
MDK-ARM/*.uvoptx
MDK-ARM/DebugConfig/
MDK-ARM/RTE/

# ============================================
# EIDE 自动生成/缓存目录
# ============================================
EIDE/.cmsis/
EIDE/.vscode/
EIDE/build/
EIDE/.arts/log/

# ============================================
# Drivers 中不必要的大型库
# ============================================
Drivers/CMSIS/DSP/DSP_Lib_TestSuite/
Drivers/CMSIS/NN/
Drivers/CMSIS/RTOS/
Drivers/CMSIS/RTOS2/
Drivers/CMSIS/docs/

# ============================================
# 系统/编辑器垃圾文件
# ============================================
Thumbs.db
.DS_Store
*.suo

注意:.gitignore 必须在 git add . 之前配置好。如果先添加后又修改了规则,需要清空暂存区重来。

初始化与提交

进入项目目录,执行以下操作:

# 进入项目目录(Windows Git Bash)
cd /f/你的项目路径

# 初始化 Git 仓库
git init

# 先添加 .gitignore,确认无误后再添加所有文件
git add .gitignore
git add .

# 查看状态,确保没有误传编译产物
git status

检查输出,应该看到源码目录(如 APP/BSP/Core/Drivers/),而不应该有 *.axf 或 *.o 等文件。确认无误后提交:

git commit -m "feat: initial commit - STM32 项目初始提交"

提交说明建议遵循规范,例如 feat 表示新增功能,fix 表示修复 bug,这样在查看历史时更清晰。

远程同步

将本地仓库关联到 GitHub 并推送:

# 关联远程仓库
git remote add origin https://github.com/你的用户名/仓库名.git

# 确认分支名称(新版 Git 默认为 main,旧版可能是 master)
git branch -m master main

# 推送代码
git push -u origin main

推送成功后,浏览器访问仓库地址即可看到文件列表。验证是否成功是必要的步骤,防止因网络问题导致静默失败。

日常更新流程

每次修改完代码后,无需重复初始化,只需三步走:

  1. 查看状态:git status 了解哪些文件被修改。
  2. 暂存修改:git add . 将所有改动加入暂存区。
  3. 提交并推送:git commit -m "描述本次修改" 然后 git push。

第二次之后推送直接用 git push 即可,不需要再加 -u origin main。

常见问题排查

错误 1:staged content different from both the file and the HEAD

现象:提示 .gitignore 文件内容不一致。 原因:暂存区的文件内容和工作区不一致(先 add 后又修改了文件)。 解决:

git rm --cached -r -f .
git add .
错误 2:remote origin already exists

现象:报错远程仓库已存在。 解决:直接查看当前地址是否正确,若正确则直接推送;若不对则修改:

git remote set-url origin https://github.com/你的用户名/仓库名.git
错误 3:Connection was reset / Failed to connect to github.com

现象:无法连接 GitHub 端口 443。 原因:网络问题或被墙。 解决:

  • 设置代理(需有代理工具):
    git config --global http.proxy http://127.0.0.1:7890
    git config --global https.proxy http://127.0.0.1:7890
    
  • 使用 SSH 方式(推荐):生成密钥并添加到 GitHub,将远程地址改为 [email protected]:...。
  • 使用国内平台如 Gitee 替代。
错误 4:Authentication failed

现象:HTTPS 密码验证失败。 原因:GitHub 已不支持密码登录。 解决:使用 Personal Access Token 代替密码。在 GitHub Settings → Developer settings → Personal access tokens 生成 token,推送时在密码处填入 token。

命令速查

  • 初次提交流程:cd 进入目录 → git init → 配置 .gitignore → git add . → git commit → git remote add → git push。
  • 日常更新:git add . → git commit -m "..." → git push。
  • 查看状态:git status(当前状态)、git log --oneline(提交历史)、git remote -v(远程地址)、git branch(分支列表)。
  • 撤销操作:
    • 撤销 git add(未 commit):git rm --cached -r -f .
    • 撤销最后一次 commit(保留文件修改):git reset --soft HEAD~1

记住核心流程:add 暂存 → commit 本地存档 → push 上传云端。遇到问题先看终端提示,再对照上述方案排查。

目录

  1. STM32 项目 Git 版本管理实战指南
  2. 环境准备
  3. 忽略文件配置
  4. ============================================
  5. MDK-ARM 编译产物
  6. ============================================
  7. MDK 用户个人配置文件
  8. ============================================
  9. EIDE 自动生成/缓存目录
  10. ============================================
  11. ============================================
  12. Drivers 中不必要的大型库
  13. ============================================
  14. ============================================
  15. 系统/编辑器垃圾文件
  16. ============================================
  17. 初始化与提交
  18. 进入项目目录(Windows Git Bash)
  19. 初始化 Git 仓库
  20. 先添加 .gitignore,确认无误后再添加所有文件
  21. 查看状态,确保没有误传编译产物
  22. 远程同步
  23. 关联远程仓库
  24. 确认分支名称(新版 Git 默认为 main,旧版可能是 master)
  25. 推送代码
  26. 日常更新流程
  27. 常见问题排查
  28. 错误 1:staged content different from both the file and the HEAD
  29. 错误 2:remote origin already exists
  30. 错误 3:Connection was reset / Failed to connect to github.com
  31. 错误 4:Authentication failed
  32. 命令速查
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • C++ STL queue 容器适配器源码逻辑深度解析
  • Python 属性描述符:原理与 ORM 实战
  • 算法刷题:找到字符串中所有字母异位词(滑动窗口解法)
  • 快速排序非递归实现详解:栈模拟与代码实战
  • JavaScript 性能优化:异步与延迟加载策略
  • C++11 手写 Promise 实现及与 std::promise 对比
  • 2025 年中秋月相计算:Python 实现与可视化
  • C++ 虚函数与纯虚函数详解:深入理解多态机制
  • 基于 Spring Cloud 的 Java 微服务实战:从单体到微服务迁移
  • 网络安全、信息安全与数据安全的概念辨析
  • PlotDigitizer 图表数据自动化提取实战指南
  • VS Code 远程连接时 Copilot Chat 图标不显示的解决方案
  • 低代码赋能人事管理系统:方案与功能解析
  • FunASR 离线文件转写服务开发指南
  • Python AI 应用开发:Embedding 向量表征与相似度计算
  • Ubuntu 20.04 安装 ROS Noetic 指南
  • 豆包手机遭厂商屏蔽:GUI Agent 是通向 AGI 的必经之路吗?
  • 滑动窗口算法进阶:水果成篮与最小覆盖子串
  • Unity3D MCP:AI 模型集成与 NPC 行为控制
  • 利用 Superlance 插件增强 Supervisor 进程监控能力

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online