分支、标签与远端
「分支」(⌘4)把分支、标签、远端、Stash、worktree 等对象收在同一列,用分段控件切换。每类对象都支持搜索框过滤。
分支
- 本地与远程分支分组显示,当前分支与上游 ahead / behind 数量直接标出;
- 复制分支名或托管平台链接;
- 与当前分支比较;
- 查看哪些分支包含某个提交;
- 重命名分支;
- 删除本地分支:只会删除已完全合并的分支,被 worktree 检出的分支会跳过;未合并的分支需要先合并或手工处理;
- 多选删除远程分支;「删除分支及远程分支」会先删本地,成功后再删远端。
合并
合并前可以选默认行为、--no-ff 或 squash。
执行前会先用 git merge-tree 预览:列出合并基点、双方 ahead / behind 数量与冲突路径,不写工作区、不写索引、不动任何分支。看到冲突可以先处理,再真正合并。合并冲突的处理见冲突;进行中的合并可以从横幅继续或中止。
标签
- 创建轻量标签、附注标签或签名标签;
- 验证 GPG / SSH 签名,结果显示为有效、无效或未签名;
- 重命名标签;
- 推送单个标签或全部标签;
- 多选删除本地标签;远程标签需要单独删除;
- 复制标签链接,或在托管平台打开。
远端
- 添加、编辑、重命名、删除远端;重命名会同步远程跟踪分支与上游配置;
- 清理远程跟踪分支:删除远端已不存在的分支对应的引用,本地分支保留;
- 从任意远端分支拉取,把 HEAD 发布为指定远程分支;
- 推送时选择具体远端。
所有的出站路径都会经过推送预检,见同步。
Stash
- 创建:可写说明,可包含未跟踪文件,也可只暂存已暂存的内容;
- 部分 stash:把选中片段或单个文件移入新的 stash,其余改动留在工作区;
- 应用或弹出时可以同时恢复原来的暂存状态;
- 从 stash 恢复单个文件或选中片段,索引与 stash 条目保持不变;
- 从 stash 创建分支;
- 查看 stash 中某个文件的版本;
- 多选删除 stash,每条都会先写恢复快照;
- 按说明过滤 stash 列表。
应用或弹出时如果发生冲突,stash 条目会保留,不会丢失。
Worktree
- 从 HEAD 或任意提交创建工作树,可同时新建分支,也可以游离 HEAD;
- 在标签页里打开链接工作树;
- 锁定、解锁、移动、修复路径;
- 清理已失效的条目;
- 多选移除工作树。
路径不存在时列表会标出「路径不存在」,可以在修复里填入移动后的实际路径。
Bisect
- 从某条提交开始 bisect,把它标记为 bad;
- 手动标记 good / bad / skip,横幅显示剩余步骤;
- 自动 bisect:给定范围与命令,Git 在每个候选提交上运行它,退出码 0 表示 good、1–127 表示 bad、125 表示跳过;
- 取消运行会停止命令并保留可继续的范围,不会自动重置。
自动 bisect 会在每个检出的提交上执行你给的命令,只运行你信任的代码。
LFS
- 查看与编辑 LFS 跟踪模式,提交
.gitattributes后团队共享; - 拉取当前仓库缺失的 LFS 对象;
- 锁定与解锁文件,支持查看持有人并强制解锁;
- 仓库健康检查会提示 git-lfs 缺失或仍是指针的文件。
子模块
- 添加子模块,指定 URL、路径与可选分支;
- 更新全部子模块,或更新到远端分支;
- 合并远端更改,保留子模块里的本地提交;
- 同步
.gitmodules中的 URL; - 移除子模块:去初始化并删除,
.git/modules下的对象留给 Git 清理; - 在新标签页里打开子模块仓库。
子模块指针变更在 diff 里单独显示,可以在嵌套仓库中查看它的历史。
稀疏检出
- 以 cone 模式维护目录列表;
- 应用后,模式之外已跟踪的文件会从工作区移除,但仍保留在 Git 中;
- 关闭稀疏检出会把所有已跟踪文件重新检出。
操作前需要确认,确认框里会写明会影响多少个文件。
Hooks
- 列出仓库里已安装的 hooks,可编辑内容、启用或停用;
- 从内置示例安装;
- 提交遇到 hook 失败时,可以在确认后跳过 hook 继续提交。
Hook 由 Git 执行,应用只负责读写文件与触发提交。
最后更新于