Git 同步状态检查器
目标
在多台电脑(公司、家里)之间切换开发时,自动检查代码同步状态,确保不会丢失代码或产生冲突。
快速开始
三步检查法
-
说出触发词:告诉 AI "检查同步"、"准备下班"或"开始工作"
-
查看报告:AI 自动检查并生成详细的同步状态报告
-
执行建议:根据报告中的命令提示,完成代码同步
典型使用示例
下班前
用户:"准备下班,检查一下代码同步" AI:运行 git 检查,发现有 3 个未推送的提交 AI:提供推送命令和验证步骤
上班时
用户:"开始工作,拉取最新代码" AI:检查远程更新,发现有 2 个新提交 AI:提供安全拉取命令
何时使用
📍 下班前(公司电脑)
-
准备离开公司,需要确保所有代码已推送到 GitHub
-
触发词: "准备下班"、"检查同步"、"推送代码"
🏠 到家后(家里电脑)
-
刚回到家,准备继续开发
-
触发词: "开始工作"、"拉取最新代码"、"检查同步"
🏢 上班前(公司电脑)
-
刚到公司,准备继续开发
-
触发词: "开始工作"、"检查同步"
🔄 任何时候
-
想知道当前代码与远程仓库的差异
-
触发词: "检查同步状态"、"git状态"
工作流程
完整检查流程图
用户触发 ↓
- 识别场景 (下班/上班/日常检查) ↓
- 执行 Git 检查 ├─ git status (本地状态) ├─ git fetch (远程更新) └─ git log (提交对比) ↓
- 分析结果 ├─ 未提交的修改? ├─ 未推送的提交? ├─ 远程新提交? └─ 代码分叉? ↓
- 生成报告 ├─ 状态总结 ├─ 问题清单 └─ 操作建议 ↓
- 提供命令 (可直接复制执行)
决策逻辑
-
场景识别:根据触发词和当前状态判断用户意图
-
优先级:先检查本地修改,再检查远程更新
-
安全原则:提供可逆的操作建议,避免数据丢失
-
验证步骤:每个操作都附带验证命令
检查流程
步骤 1: 检查基本 Git 状态
检查当前分支和状态
git status git branch -vv
识别问题:
-
✅ 工作区干净: nothing to commit, working tree clean
-
⚠️ 有未暂存的修改: Changes not staged for commit
-
⚠️ 有未提交的修改: Changes to be committed
-
⚠️ 有未跟踪的文件: Untracked files
步骤 2: 检查与远程仓库的差异
获取远程仓库最新信息(不拉取代码)
git fetch origin
检查本地与远程的差异
git status -sb git log --oneline origin/main..HEAD # 本地领先的提交 git log --oneline HEAD..origin/main # 远程领先的提交
识别问题:
-
✅ 本地领先: Your branch is ahead of 'origin/main' by X commits
-
⚠️ 远程领先: Your branch is behind 'origin/main' by X commits
-
🔴 分叉了: Your branch and 'origin/main' have diverged
步骤 3: 检查未推送的提交
查看未推送的提交详情
git log origin/main..HEAD --oneline git diff origin/main..HEAD --stat
步骤 4: 检查潜在冲突
检查是否有潜在冲突(模拟合并)
git fetch origin git merge-base HEAD origin/main git diff --name-only $(git merge-base HEAD origin/main)..HEAD git diff --name-only $(git merge-base HEAD origin/main)..origin/main
步骤 5: 生成同步报告
输出格式
场景 A: 准备下班(公司电脑)
🏢 → 🏠 同步检查报告
📊 当前状态
- 分支: main
- 本地提交: 3 个未推送
- 工作区: 2 个文件有修改
⚠️ 需要处理的问题
1. 未提交的修改(2个文件)
``` M src/components/dashboard-client.tsx M src/hooks/use-smart-comparison.ts ```
建议操作: ```bash git add . git commit -m "feat: 完成XXX功能开发" ```
2. 未推送的提交(3个)
``` e18cf2e feat: 添加多图表标签页功能 a1b2c3d fix: 修复KPI计算精度问题 d4e5f6g docs: 更新开发文档 ```
建议操作: ```bash git push origin main ```
✅ 推送清单
在离开公司前,请完成以下步骤:
- 提交所有未保存的修改
- 推送所有提交到 GitHub
- 验证 GitHub 上能看到最新代码
- 记录当前工作状态(可选)
🎯 推送后验证命令
```bash git status # 应显示 "nothing to commit, working tree clean" git log --oneline origin/main..HEAD # 应无输出(表示已完全同步) ```
场景 B: 开始工作(家里/公司电脑)
🏠/🏢 开始工作 - 同步检查报告
📊 当前状态
- 分支: main
- 远程领先: 3 个提交
- 工作区: 干净
📥 需要拉取的更新
远程新增的提交(3个)
``` e18cf2e feat: 添加多图表标签页功能 a1b2c3d fix: 修复KPI计算精度问题 d4e5f6g docs: 更新开发文档 ```
变更的文件
``` src/components/features/multi-chart-tabs.tsx (新文件) src/hooks/use-smart-comparison.ts (修改) 开发文档/01_features/F014_multi_chart_tabs/ (新增) ```
✅ 拉取建议
安全拉取命令: ```bash
1. 确认本地工作区干净
git status
2. 拉取最新代码
git pull origin main
3. 验证拉取成功
git status pnpm dev # 启动项目验证 ```
⚠️ 注意事项
- ✅ 工作区干净,可以安全拉取
- 📝 拉取后建议运行
pnpm dev验证项目正常 - 📚 查看更新的开发文档了解新功能
场景 C: 代码分叉警告
🔴 代码分叉警告
问题描述
本地分支和远程分支已经分叉:
- 本地独有提交: 2 个
- 远程独有提交: 3 个
📊 分叉详情
本地独有的提交
``` a1b2c3d feat: 添加XXX功能(在家里电脑上提交) d4e5f6g fix: 修复YYY问题 ```
远程独有的提交
``` e18cf2e feat: 添加ZZZ功能(在公司电脑上提交) f7g8h9i fix: 修复AAA问题 j0k1l2m docs: 更新文档 ```
🔧 解决方案
方案 1: Rebase(推荐,保持线性历史)
```bash
1. 备份当前分支
git branch backup-$(date +%Y%m%d-%H%M%S)
2. 获取最新远程代码
git fetch origin
3. Rebase 到远程分支
git rebase origin/main
4. 如果有冲突,解决后继续
git rebase --continue
5. 强制推送(仅当确定本地更改正确时)
git push origin main --force-with-lease ```
方案 2: Merge(保留完整历史)
```bash
1. 拉取并合并
git pull origin main
2. 解决冲突(如果有)
编辑有冲突的文件
3. 提交合并
git add . git commit -m "merge: 合并远程更改"
4. 推送
git push origin main ```
⚠️ 预防措施
- 始终在下班前推送代码
- 始终在开始工作前拉取代码
- 避免在多台电脑同时开发同一功能
- 使用功能分支隔离不同的开发任务
常见场景处理
场景 1: 忘记推送就下班了
症状: 在家里电脑上拉取时,发现没有公司的最新代码
解决:
-
第二天到公司后,运行检查命令
-
发现未推送的提交
-
推送到 GitHub
-
回家后重新拉取
场景 2: 两台电脑都有未推送的提交
症状: 代码分叉,本地和远程都有独有的提交
解决:
-
运行检查命令,识别分叉
-
选择 Rebase 或 Merge 方案
-
解决冲突(如果有)
-
推送合并后的代码
场景 3: 不确定当前在哪台电脑上工作过
症状: 混淆了工作进度
解决:
-
运行检查命令
-
查看未推送的提交信息
-
查看提交时间和作者信息
-
根据提交内容判断
最佳实践
✅ 推荐的工作流程
下班前(公司电脑):
1. 运行同步检查
<使用此 skill>
2. 提交所有修改
git add . git commit -m "feat: 完成XXX功能"
3. 推送到 GitHub
git push origin main
4. 验证推送成功
git log --oneline origin/main..HEAD # 应无输出
开始工作前(家里/公司电脑):
1. 运行同步检查
<使用此 skill>
2. 拉取最新代码
git pull origin main
3. 验证项目正常
pnpm dev
4. 开始开发
🔒 安全措施
永远不要使用 git push --force
-
除非你 100% 确定远程代码是错误的
-
使用 --force-with-lease 更安全
提交前先拉取
git fetch origin git status # 检查是否有冲突
使用功能分支
在公司开发新功能
git checkout -b feature/new-dashboard
下班前推送
git push origin feature/new-dashboard
在家拉取并继续开发
git fetch origin git checkout feature/new-dashboard git pull origin feature/new-dashboard
定期同步
-
不要积累太多未推送的提交
-
建议每完成一个小功能就推送一次
检查命令速查表
基础状态检查
git status # 工作区状态 git branch -vv # 分支与跟踪关系
与远程对比
git fetch origin # 获取远程更新(不合并) git log origin/main..HEAD # 本地独有的提交 git log HEAD..origin/main # 远程独有的提交
差异对比
git diff origin/main # 与远程的详细差异 git diff --stat origin/main # 差异文件统计
提交历史
git log --oneline -10 # 最近10个提交 git log --graph --oneline --all # 分支图形化历史
远程仓库信息
git remote -v # 远程仓库地址 git remote show origin # 远程仓库详细信息
工具限制
本 skill 只能检查和建议,不能自动执行 Git 操作。所有 Git 命令需要用户手动执行,以确保安全。
输出原则
-
清晰的状态总结 - 用户一眼看懂当前情况
-
具体的操作建议 - 提供可直接复制执行的命令
-
风险提示 - 标注潜在的问题和注意事项
-
验证步骤 - 告诉用户如何确认操作成功
高级功能
识别工作电脑
可以在 Git 配置中为不同电脑设置标识:
在公司电脑上
git config user.name "张三 (公司)" git config user.email "zhangsan@company.com"
在家里电脑上
git config user.name "张三 (家)" git config user.email "zhangsan@personal.com"
这样通过 git log 就能清楚看到哪些提交是在哪台电脑上完成的。
自动检查脚本(可选)
可以创建一个 pre-commit hook 自动检查:
.git/hooks/pre-commit
#!/bin/bash git fetch origin LOCAL=$(git rev-parse @) REMOTE=$(git rev-parse origin/main)
if [ $LOCAL != $REMOTE ]; then echo "⚠️ 警告: 远程仓库有更新,请先拉取!" exit 1 fi