Git GUI中切换分支需通过Branch→Checkout...菜单操作:弹窗选择目标分支(本地为纯文本,远程带remotes/origin/前缀),点击OK即可完成切换并刷新工作区。

Git GUI 里怎么 checkout 分支
Git GUI 自带的分支切换功能藏得有点深,但操作本身不复杂。关键不是找“切换”按钮,而是用 Branch → Checkout 菜单路径——这是唯一可靠的方式,别在界面上乱点“Switch”或“Change”,那些根本不存在。
打开 Git GUI 后,确保你已在目标仓库目录下启动(右键 → Git GUI Here),然后:
- 点击顶部菜单
Branch - 选择
Checkout...(注意末尾有省略号,说明会弹窗) - 在弹出窗口中选中你要切换的分支名(本地分支显示为纯文本,远程分支带
remotes/origin/xxx前缀) - 点
OK,界面左上角状态栏会立即显示新分支名,同时工作区文件自动刷新
为什么点了 Branch → Create 还是切不到新分支
创建分支和切换分支是两步独立动作。Branch → Create 只新建分支指针,不会移动 HEAD,所以当前工作区仍停留在原分支。常见错误是建完就去改代码,结果提交到了老分支。
正确做法只有两种:
- 建完立刻再走一遍
Branch → Checkout...手动切过去 - 或者干脆不用 GUI 创建,直接在终端执行
git checkout -b feature/x——这条命令一步到位:建 + 切 + 设置 upstream
Git GUI 没有“创建并切换”的勾选项,这点和 VS Code、GitX 完全不同。
切换失败时看到 “Unmerged files” 或 “Your local changes would be overwritten” 怎么办
这是 Git GUI 最常卡住的地方。它不像命令行那样明确提示 stash,而是直接报错退出,且不告诉你下一步该点哪。
真实原因就两个:
- 当前有未提交的修改,且目标分支里同名文件在相同位置有不同改动(冲突前提)
- 你正处在“半合并”状态(比如上次 merge 没完成,
.git/MERGE_HEAD还存在)
解决方式很直接:
- 先看左下角状态栏有没有黄色感叹号,有就点它打开“Unstaged Changes”面板,确认哪些文件被修改
- 如果这些修改不重要:点右键 →
Reset Hard(⚠️危险,慎用) - 如果还要保留:必须切到命令行,运行
git stash,再回 Git GUI 重试Checkout - 如果卡在 merge 中:删掉
.git/MERGE_HEAD文件(或用git merge --abort),再试
Git GUI 切分支后代码没变,是不是工具坏了
大概率不是工具问题,而是你没意识到 Git GUI 不自动 git pull。它只做 git checkout,不拉远程更新。如果你切换的是远程跟踪分支(如 remotes/origin/dev),GUI 会提示“不能直接检出远程分支”,必须先基于它创建本地分支。
典型误操作链:
- 看到远程有
origin/release/2.3,直接在 Checkout 窗口选它 → 失败 - 于是手动建本地分支
release/2.3→ 成功,但内容还是旧的 - 因为建的时候没指定起点,它默认基于当前 HEAD 创建,而非远程最新 commit
正确做法:
- 先在终端运行
git fetch - 再用 Git GUI 的
Branch → Create,在“Starting Revision”框里手动输入origin/release/2.3 - 最后
Checkout新建的本地分支
Git GUI 对远程分支的支持非常基础,所有“同步”动作都得靠命令行兜底。别指望它替你做 fetch / rebase / prune。


















