05 · 分支、远端与标签
状态:✅ 已实现 · 范围:v1 · 工程参考:
../spec.md
分支
分支命令集中在分支选择器(状态栏;仓库行右键菜单与命令面板同样可达)。
| 操作 | 行为 |
|---|---|
| Checkout | 切换分支。脏工作树会被拦截——GitTreeDesk 提供先自动 stash的选项,而不是直接失败。检出的是提交而非分支时进入 detached HEAD,并显示横幅提供"在此创建分支"。 |
| 创建 | 从任意 ref 创建(分支、tag、提交——带搜索的选择器)。可在创建时顺手设置 upstream。 |
| 重命名 | 仅本地分支;若存在 upstream 会一并重命名追踪(并提示远端分支本身不会被重命名)。 |
| 删除 | 当前分支不可删除。删除未合并分支会给出警告并先创建 backup ref(可撤销——第 06 页)。 |
| 设置 upstream | 分支没有 upstream 时,push 会提供 "publish & set upstream"。 |
| 与当前分支对比 | 在编辑区打开该分支与当前检出分支的 diff。 |
| 复制分支名 | 右键菜单。 |
分支选择器每项显示:名称、相对 upstream 的 ahead/behind、最后一条提交的 subject 与相对时间;输入即模糊过滤。
远端
按仓库管理(仓库右键菜单 → Remotes):
- 每个远端可增删改 URL。push 的默认远端是
origin(可在设置中覆盖),推送对话框默认预选它。 - Fetch——单仓库或批量:
- 选项:prune(清理远端已删除的跟踪分支)与跟随 tag;
- 批量入口:Repos 视图右键 → "Fetch 所选";命令面板 → "Fetch 所有仓库"。进度与失败按仓库分别汇报(15 个失败绝不会掩盖 15 个成功)。
- Pull——策略按仓库生效,取自设置:
ff-only(默认:最安全;历史分叉时明确报错而非静默合并),merge,rebase;- 可在工作区设置中按仓库覆盖(第 12 页)。必要时先自动 stash,完成后自动恢复。
- Push——推送对话框列出该仓库全部远端并默认预选默认远端;可勾选多个远端,一次操作把该分支推送到全部所选远端,各远端分别报告成功或失败(一个被拒不会掩盖其他结果)。无 upstream 的分支提供 "publish & set upstream",把跟踪设在首个所选远端上。远端历史已分叉时不提供裸 force;force-with-lease 藏在双重确认之后,确认框会点名分支与远端。推送 tag 有独立操作。
标签
- 列表——本地 / 远端分组;显示附注(annotated)与轻量(lightweight)类型及指向的提交。
- 创建——对任意提交(提交图行或提交详情面板):附注(带消息)或轻量;可勾选"创建后推送"。
- 删除 / 推送——删除存在于远端的 tag 会警告,并可同时在远端删除。tag 只是轻量指针,删除时不创建 backup ref(安全网针对分支,见第 06 页)。
- Checkout——检出 tag 指向的提交(detached HEAD,附"在此创建分支")。
跨仓库批量操作
- 在 Repos 视图多选仓库 → Fetch 所选 / Pull 所选,附结果汇总(逐仓库:已更新 / 已是最新 / 失败,可展开看原始输出)。
- 命令面板提供 "Fetch 工作区所有仓库",汇总同样输出到 Output 面板。
- 批量结果不阻塞操作:可以继续干活;汇总保留在 Output 面板。
边界情况
- 认证失败以类 型化错误呈现("需要
<远端>的凭据"、"SSH key 被拒绝"),附 "Details" 抽屉展示 Git 原始输出——排查见第 13 页。 - Detached HEAD 状态会禁用仅限分支的操作(重命名/删除),并提示创建分支。
- 工作区中的 bare 仓库可以 fetch/push、可在提交图中浏览,但没有工作树——变更/提交类功能不可用。