boot调试暂存
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
---
|
||||
name: submodule-commit-push
|
||||
description: 提交并推送含子模块的 Git 仓库(先子模块后父仓库,处理 detached HEAD / 落后远程等常见问题)
|
||||
source: auto-skill
|
||||
extracted_at: '2026-06-22T03:44:15.544Z'
|
||||
---
|
||||
|
||||
# 提交并推送所有仓库(含子模块)
|
||||
|
||||
## 适用场景
|
||||
项目包含多个 Git 子模块,需要将所有变更(子模块内文件删除/修改 + 父仓库指针更新)一次性提交并推送到远端。
|
||||
|
||||
## 核心原则
|
||||
|
||||
**子模块必须先于父仓库提交并推送**,否则父仓库的指针会指向尚未推送到远端的提交,导致其他人拉取失败。
|
||||
|
||||
## 操作流程
|
||||
|
||||
### 1. 检查整体状态
|
||||
|
||||
```bash
|
||||
cd <项目根目录>
|
||||
git status # 查看父仓库变更
|
||||
git submodule status # 查看子模块状态(+ 表示新提交,- 表示未初始化)
|
||||
```
|
||||
|
||||
### 2. 逐个检查子模块
|
||||
|
||||
对每个有变更的子模块,进入目录检查:
|
||||
|
||||
```bash
|
||||
cd <子模块路径>
|
||||
git status
|
||||
git diff HEAD --stat
|
||||
git branch -a # 检查是否在 detached HEAD
|
||||
git log -n 1 --oneline # 检查是否落后远端
|
||||
```
|
||||
|
||||
### 3. 处理子模块常见问题
|
||||
|
||||
| 问题 | 表现 | 解决方案 |
|
||||
|------|------|----------|
|
||||
| **落后远端** | `Your branch is behind 'origin/xxx' by N commits` | 先 `git stash` → `git pull` → `git stash pop`,再提交 |
|
||||
| **detached HEAD** | 子模块不在任何分支上 | `git checkout -b develop` 或 `git checkout develop` 切到分支再提交 |
|
||||
| **仅 modified content** | 父仓库显示 `modified content` 但子模块 `git status` 干净 | 子模块只有未提交的本地修改,需在子模块内 add + commit |
|
||||
|
||||
### 4. 提交并推送每个子模块
|
||||
|
||||
```bash
|
||||
cd <子模块路径>
|
||||
git add -A
|
||||
git commit -m "chore: 具体变更描述
|
||||
|
||||
- 文件1: 变更说明
|
||||
- 文件2: 变更说明"
|
||||
git push origin <分支名> # 首次推送新分支用 git push -u origin <分支名>
|
||||
```
|
||||
|
||||
> **提交消息格式**:按用户偏好,需列出每个文件的变更说明,而非笼统总结。
|
||||
|
||||
### 5. 在父仓库更新子模块指针
|
||||
|
||||
```bash
|
||||
cd <项目根目录>
|
||||
git add <子模块路径1> <子模块路径2> ...
|
||||
git commit -m "chore: 更新子模块指针到最新提交
|
||||
|
||||
- 子模块1: 变更说明
|
||||
- 子模块2: 变更说明"
|
||||
git push origin <分支名>
|
||||
```
|
||||
|
||||
### 6. 验证
|
||||
|
||||
```bash
|
||||
cd <项目根目录>
|
||||
git status # 应显示 nothing to commit, working tree clean
|
||||
git submodule status # 所有子模块无 + 或 - 前缀
|
||||
```
|
||||
|
||||
## 本项目子模块清单
|
||||
|
||||
| 子模块 | 路径 | 默认分支 | 远端地址 |
|
||||
|--------|------|----------|----------|
|
||||
| FatFS | `Project/GateWay/source/Module/FatFS` | master | 192.168.2.47 |
|
||||
| GateWay_Debug | `Project/GateWay/source/Module/GateWay_Debug` | develop | 192.168.2.47 |
|
||||
| SDCard | `Project/GateWay/source/Module/SDCard` | master | 192.168.2.47 |
|
||||
| sx127x | `Project/GateWay/source/Module/sx127x` | develop | 192.168.2.47 |
|
||||
|
||||
> 父仓库 GateWay 的远端在 8.137.104.4,子模块的远端在 192.168.2.47(内网),注意网络可达性。
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 如果子模块只有指针变更(无文件级修改),说明子模块已有新提交但父仓库指针未更新,只需在父仓库 `git add <子模块路径>` 即可
|
||||
- FatFS 子模块容易因为 documents/ 目录产生大量 untracked 文件冲突,`git stash` 时加 `--include-untracked`
|
||||
- sx127x 经常处于 detached HEAD 状态,操作前务必先切到 develop 分支
|
||||
Reference in New Issue
Block a user