智能检查本地代码与GitHub的同步状态,识别未提交、未推送、未拉取的更改,帮助在多台电脑之间无缝切换开发。触发词:"检查同步"、"切换电脑"、"准备下班"、"开始工作"。
在多台电脑(公司、家里)之间切换开发时,自动检查代码同步状态,确保不会丢失代码或产生冲突。
# 下班前
用户:"准备下班,检查一下代码同步"
AI:运行 git 检查,发现有 3 个未推送的提交
AI:提供推送命令和验证步骤
# 上班时
用户:"开始工作,拉取最新代码"
AI:检查远程更新,发现有 2 个新提交
AI:提供安全拉取命令
用户触发
↓
1. 识别场景
(下班/上班/日常检查)
↓
2. 执行 Git 检查
├─ git status (本地状态)
├─ git fetch (远程更新)
└─ git log (提交对比)
↓
3. 分析结果
├─ 未提交的修改?
├─ 未推送的提交?
├─ 远程新提交?
└─ 代码分叉?
↓
4. 生成报告
├─ 状态总结
├─ 问题清单
└─ 操作建议
↓
5. 提供命令
(可直接复制执行)
# 检查当前分支和状态
git status
git branch -vv
识别问题:
nothing to commit, working tree cleanChanges not staged for commitChanges to be committedUntracked files# 获取远程仓库最新信息(不拉取代码)
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 commitsYour branch is behind 'origin/main' by X commitsYour branch and 'origin/main' have diverged# 查看未推送的提交详情
git log origin/main..HEAD --oneline
git diff origin/main..HEAD --stat
# 检查是否有潜在冲突(模拟合并)
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
# 🏢 → 🏠 同步检查报告
## 📊 当前状态
- 分支: 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 # 应无输出(表示已完全同步)
\```
# 🏠/🏢 开始工作 - 同步检查报告
## 📊 当前状态
- 分支: 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` 验证项目正常
- 📚 查看更新的开发文档了解新功能
# 🔴 代码分叉警告
## 问题描述
本地分支和远程分支已经分叉:
- 本地独有提交: 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. **始终在下班前推送代码**
2. **始终在开始工作前拉取代码**
3. **避免在多台电脑同时开发同一功能**
4. **使用功能分支隔离不同的开发任务**
症状: 在家里电脑上拉取时,发现没有公司的最新代码
解决:
症状: 代码分叉,本地和远程都有独有的提交
解决:
症状: 混淆了工作进度
解决:
下班前(公司电脑):
# 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
--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