You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 9存在未提交变更时无法切换分支的解决方案咨询

解决方案:无需提交即可转移/保存变更并切换分支

你遇到的这个场景太典型了——临时起意改代码忘了切分支,结果一堆变更卡着没法换分支。完全不用被迫把这些无关变更提交到当前分支,有两个非常实用的方法解决:

方法1:用Git Stash临时保存变更(适合临时切换分支再回来继续)

Git Stash就像一个“变更暂存箱”,能把当前工作区的所有未提交变更暂时存起来,让工作区回到干净状态,这样你就能自由切换分支了。

命令行操作:

  • 先保存当前变更:
    git stash push -m "临时保存新功能开发的变更"
    
    (加-m是给这个stash加个备注,方便之后快速识别)
  • 现在可以正常切换分支了,比如切到主分支:
    git checkout main
    
  • 之后要回到之前的变更继续开发,只要把stash取出来:
    git stash pop
    
    (pop会把stash里的变更恢复到工作区,同时删除这个stash;如果只是想查看不想删除,用git stash apply)

Xcode 9里的可视化操作:

  1. 打开Xcode的Source Control菜单,选择Stash Changes...
  2. 在弹出的窗口里给这个stash加个描述(比如“新功能临时暂存”),点击Stash就搞定了
  3. 现在去Source Control里切换分支就不会有阻碍了
  4. 要恢复变更的话,回到Source Control菜单,选择Stashes,找到你刚才存的那个stash,右键选择Apply Stash或者Pop Stash就行

方法2:直接基于当前变更创建新分支(更适合把变更转移到正确的分支)

既然你本来就应该在新分支开发这个功能,那直接一步到位,基于当前的工作状态创建新分支,这样所有未提交的变更会自动带到新分支上,原来的分支就回到干净状态了。

命令行操作:

  • 创建并切换到新分支:
    git checkout -b feature/new-functionality
    
    (feature/new-functionality是分支名,你可以改成自己习惯的命名)
  • 现在你就在新分支上了,所有之前的变更都在这个分支里,之后正常提交就行
  • 如果要切回原来的分支,直接git checkout 原分支名,原来的分支是干净的

Xcode 9里的可视化操作:

  1. 打开Xcode的Source Control菜单,选择New Branch...
  2. 在弹出的窗口里输入新分支的名字(比如feature-new-function),然后确保勾选Create branch from current state(Xcode9里这个选项默认是勾选的,没勾的话一定要补上)
  3. 点击Create,之后Xcode会自动切换到这个新分支,你的所有未提交变更都会跟着过来
  4. 现在你就可以在正确的分支上继续开发和提交了,原来的分支不受影响

小提醒

  • 如果用Stash的话,记得别把stash忘在脑后了,时间长了可能会搞混哪个stash对应哪个变更,所以加备注很重要
  • 方法2其实更贴合你的场景,因为本来就应该在新分支开发,直接把变更转移过去一步到位,省得之后还要恢复stash

内容的提问来源于stack exchange,提问作者Tigran Iskandaryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:24:06