← ClaudeAtlas

git-smart-updatelisted

智能 Git 更新工具,支持自动暂存、冲突解决和本地提交处理。当用户说"更新代码"、"拉取最新代码"、"git pull"、"更新当前分支"、"更新所有分支"、"保留本地修改并更新"时触发。自动处理 stash-update-restore 循环,智能解决冲突(优先采用远程改进,同时保留本地调试代码),支持 rebase 和 merge 两种模式。
nicholyx/ai-skills · ★ 6 · AI & Automation · score 75
Install: claude install-skill nicholyx/ai-skills
# Git 智能更新 智能更新 Git 仓库,同时保留本地修改。自动处理暂存-更新-还原循环,并智能解决合并冲突。 ## 使用场景 当出现以下情况时使用此技能: - 用户想更新/拉取代码,且有本地未提交的修改 - 用户说"更新代码"、"拉取最新"、"git pull 并保留我的修改" - 用户提到更新分支(当前分支或所有分支) - 你在 pull 操作前检测到未提交的修改 - 本地有已提交的代码,需要与远程同步 ## 核心工作流程 ### 步骤 1:分析当前状态 首先,了解当前的工作状态: ```bash # 检查当前分支 git branch --show-current # 检查未提交的本地修改 git status --porcelain # 检查是否有 upstream 分支 git rev-parse --abbrev-ref --symbolic-full-name @{u} # 检查本地是否有已提交但未推送的 commit git log @{u}..HEAD --oneline ``` **判断点:** - 无本地修改 → 直接进入更新流程 - 有未提交修改 → 进入暂存工作流 - 有本地 commit → 询问 rebase 还是 merge - 无 upstream 分支 → 警告用户,询问处理方式 ### 步骤 2:处理本地 Commit(如果存在) 检查本地是否有未推送的提交: ```bash # 获取本地领先的 commit 数量 LOCAL_COMMITS=$(git log @{u}..HEAD --oneline | wc -l) ``` **如果有本地 commit(LOCAL_COMMITS > 0):** 询问用户选择合并策略: ``` 检测到你有 {N} 个本地提交尚未推送到远程。 你希望如何与远程更新合并? 1. **Rebase(变基)** - 推荐 ✓ 提交历史更清晰线性 ✓ 避免不必要的合并提交 ⚠️ 会重写本地提交历史 2. **Merge(合并)** ✓ 保留原始提交历史 ✓ 更安全的合并方式 ⚠️ 会产生一个合并提交 请选择:rebase / merge ``` 记录用户选择(`use_rebase`),用于后续的 pull 操作。 ### 步骤 3:暂存本地修改(如果需要) 如果有未提交的本地修改: ```bash git stash push -m "更新前自动暂存 - $(date '+%Y-%m-%d %H:%M:%S')" ``` 记录 stash hash 以便后续验证。 ### 步骤 4:获取远程更新 **重要:无论更新当前分支还是所有分支,都先 fetch 所有远程信息** ```bash # 获取所有远程分支的更新信息 # 这样即使断网,也可以切换和合并其他分支 git fetch --all ``` 这步的好处: - 所有远程分支信息缓存到本地 `refs/remotes/origin/` - 断网后仍可查看其他分支状态、切换分支、合并分支 - 只下载引用信息,不下载完整代码,速度快 ### 步骤 5:合并远程更新到本地 **根据用户选择的策略执行:** **当前分支**(默认): ```bash # 如果用户选择了 rebase git rebase @{u} # 如果用户选择了 merge 或未选择(默认) git merge @{u} ``` **所有分支**(