# ============================================================================= # armor — ESP32-C3 / ESP-IDF v6.1 工程专用 .gitignore # ----------------------------------------------------------------------------- # 取舍原则 # 1) 只忽略「本机生成物 + 本机专有配置 + 编辑器/系统杂物」; # 源码、构建脚本、分区表、可复现配置一律入库。 # 2) 能用 "/" 锚定就用锚定模式,避免将来新增同名目录时被误伤。 # 3) 每段都写明理由,后人可据此判断能否删改。 # 4) 语法提醒:.gitignore 的 "#" 注释必须独占一行,不能写在模式后面; # 行尾空格会被静默丢弃(或被当成模式的一部分),也不要加。 # # 自检 # git status --short # 期望只列出应该入库的源文件 # git check-ignore -v <路径> # 查看某路径被哪条规则命中 # ============================================================================= # ============================================================================= # 1. ESP-IDF 构建输出(体积最大,本工作区约 17 MB,必须忽略) # ============================================================================= # idf.py 默认在工程根目录生成 build/:CMake/Ninja 缓存、.o、静态库、固件 # 镜像、flasher_args.json、compile_commands.json 全在里面。 # 本工程路径是纯 ASCII,不会触发 idf.ps1 的「非 ASCII 路径 -> 外置构建目录」 # 逻辑,所以 build/ 就落在工程内。 /build/ # 其它常见构建目录命名:多配置构建、CMake 预设、CLion /build-*/ /cmake-build-*/ # 仅当 IDF_BUILD_DIR 被指向工程内部时才会出现 # (idf.ps1 的默认兜底是 <盘符>:\esp-idf-build\armor,位于仓库之外) /esp-idf-build/ # clangd --background-index 的索引缓存(.vscode 里启用了该选项) /.cache/ # 根目录下零散的 CMake/Ninja 缓存(正常应在 build/ 内,保险起见) /.ninja_deps /.ninja_log /CMakeCache.txt /CMakeFiles/ # ============================================================================= # 2. ESP-IDF 生成的本机配置 # ============================================================================= # sdkconfig : menuconfig/构建时自动写出,代表「本机当前状态」,每台机器都可能不同 # sdkconfig.old : 上一次配置的备份 # 可复现的那份是 sdkconfig.defaults(已生成,见第 9 节),所以这两个都忽略。 /sdkconfig /sdkconfig.old # 提示:ESP-IDF 工具在 Windows 上写 sdkconfig / sdkconfig.defaults 用的是 CRLF, # 这是工具行为、无需干预 —— 入库行尾由 .gitattributes 统一成 LF, # 本地暂时出现 CRLF 不会让 git status 变脏(已实测)。 # ============================================================================= # 3. IDF Component Manager(引入 idf_component.yml 后才会出现) # ============================================================================= # managed_components/ 是下载到本地的第三方组件副本,官方文档明确说它 # 「通常不纳入版本控制」;dependencies.lock 由工具自动求解生成、禁止手改。 # 若团队要锁定依赖版本,可注释掉 dependencies.lock 并把它提交入库。 /managed_components/ /dependencies.lock # 工具导出的编译数据库副本(真正那份在 build/ 里,已随 build/ 忽略) /compile_commands.json # ============================================================================= # 4. 固件产物与运行日志 # ============================================================================= # 只锚定根目录,避免误伤将来放进 assets/ 之类的素材 /*.bin /*.elf /*.map /*.hex # README 里 monitor 打印的 CSV,属于采集到的运行数据,不入库 /logs/ *.log # ============================================================================= # 5. 密钥类文件 —— 提交即泄密,且很难从历史里挽回 # ============================================================================= # 安全启动签名私钥 / Flash 加密密钥 / 证书私钥。 # 若仓库确实需要存放公开证书,请把下面的通配收窄成具体文件名。 *.pem *.key *.p12 *.pfx # ============================================================================= # 6. 编辑器 / IDE(本机专有,往往含绝对路径) # ============================================================================= # VS Code + ESP-IDF 扩展自动生成。当前 .vscode/settings.json 里是 # C:\esp\v6.1\esp-idf、d:\宣筹\...\build、COM10 这类本机绝对路径, # 提交上去只会误导别人。 /.vscode/* # 想共享「推荐扩展列表」时,取消下一行注释(上一行的 /.vscode/* 必须保留) !/.vscode/extensions.json /.idea/ /.vs/ *.code-workspace *.sublime-project *.sublime-workspace # 编辑器临时/交换文件 *.swp *.swo *~ .#* \#*# # ============================================================================= # 7. Python 与测试/覆盖率工具缓存(ESP-IDF 工具链脚本产物) # ============================================================================= __pycache__/ *.py[cod] .venv/ venv/ /.mypy_cache/ /.pytest_cache/ /.ruff_cache/ # pytest-embedded、单元测试与尺寸报告(ESP-IDF 自身仓库也忽略这些) pytest-embedded/ pytest_embedded_log/ TEST_LOGS/ XUNIT_RESULT*.xml build_summary_*.xml app_info_*.txt size_info*.txt .manifest_sha # 覆盖率 *.gcda *.gcno *.gcov coverage.info coverage_report/ # ============================================================================= # 8. 操作系统杂物 # ============================================================================= Thumbs.db ehthumbs.db desktop.ini $RECYCLE.BIN/ .DS_Store .AppleDouble ._* *.lnk # ============================================================================= # 9. 必须入库的文件(切勿加入忽略列表) # ============================================================================= # CMakeLists.txt / main/CMakeLists.txt # main/*.cpp main/*.hpp main/*.c main/*.h # idf.ps1 构建入口(含非 ASCII 路径 workaround) # partitions.csv 自定义分区表 # README.md 工程文档(移植要点与踩坑记录) # .clangd 工程级 clangd 配置 # sdkconfig.defaults 可复现配置来源(由 idf.py save-defconfig 生成) # .gitattributes 行尾(CRLF/LF)与文本/二进制归属策略 # # 提醒:ESP-IDF 自身仓库的 .gitignore 会忽略 .clangd 和 .vscode/; # 本工程故意保留 .clangd(它是为 clangd 去掉 -f*/-m* 的项目配置), # 不要照抄 IDF 仓库的规则。 # ============================================================================= # 10. sdkconfig.defaults 与 sdkconfig 的关系(2026-10-14 核对并修复) # ============================================================================= # 忽略 sdkconfig 的前提是 sdkconfig.defaults 存在且正确。核对时发现: # * README「目录结构」里列的 sdkconfig.defaults 当时并不存在; # * 当时的 sdkconfig(以及 build/config/sdkconfig.h)是 # CONFIG_PARTITION_TABLE_SINGLE_APP=y、CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y, # 即用的是默认 single-app 分区表,partitions.csv 根本没有生效; # * 而 README「实测验证结果」的 boot log 却是 4 MB flash + 2 MB factory 分区。 # 已按文档修正(4 MB flash + CONFIG_PARTITION_TABLE_CUSTOM=y)重新配置, # 并用 `idf.py save-defconfig` 生成 sdkconfig.defaults,内容就是最小差异: # CONFIG_IDF_TARGET="esp32c3" # CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y # CONFIG_PARTITION_TABLE_CUSTOM=y # (CONFIG_PARTITION_TABLE_CUSTOM_FILENAME 的 Kconfig 默认值本来就是 # "partitions.csv",所以 save-defconfig 不会重复写入。) # # 维护规则: # * 改配置请改 sdkconfig.defaults(或 menuconfig 后重跑 save-defconfig), # 不要把 sdkconfig 提交进来; # * 想确认「相对 IDF 默认值改了什么」:重跑 idf.py save-defconfig 再看 diff; # * 构建日志里分区表应为 nvs 0x9000 / phy_init 0xf000 / factory 0x10000 2M, # 否则说明 defaults 没生效或 partitions.csv 没被采用。 # =============================================================================