SuperAPI AI 工具集

syncing-main-branch

编程与开发

查看项目

更新于 10-16 01:34

技能介绍

用途:在明确调用后,将当前仓库的干净工作区切换到本地 main 分支,并从其配置的上游快进同步,同时保留被离开的分支、提交和文件。

主要能力与流程:先检查跟踪与未跟踪状态、分支和 HEAD,使用 git status --porcelain=v1 --untracked-files=all、git status --short --branch、git symbolic-ref --quiet --short HEAD。若存在任何本地改动即停止,不自动 stash、提交、丢弃或携带。若 HEAD 处于分离状态,记录并检查包含它的引用,直到仅存于 reflog 的提交被用户选择的 branch 或 tag 保留。

解析 main:存在本地 refs/heads/main 时使用它;缺失时,仅当唯一目标远程 main 明确时,用 git switch --no-overwrite-ignore --track -c main <remote>/main 创建跟踪分支。远程不明确、main 不存在或已被其他工作区占用时停止,不替换其他分支,也不绕过工作区保护。

切换与同步:必要时用 git switch --no-overwrite-ignore main 切换。验证 main 跟踪预期上游,获取其配置远程,然后仅快进:upstream_remote=$(git config --get branch.main.remote)、git rev-parse --abbrev-ref 'main@{upstream}'、git fetch "$upstream_remote"、git merge --ff-only --no-overwrite-ignore 'main@{upstream}'。

限制:上游缺失或异常、认证失败、分叉、忽略文件冲突或非快进时停止。不执行 rebase、reset、force、删除文件、更改上游或删除先前分支。最后用 git status --short --branch 和 git log -1 --oneline --decorate 验证,报告活动分支、前后对象 ID、上游及是否推进;“Already up to date” 即成功,无需提交。