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

Xcode 9.2版本控制:如何回退master分支至昨日版本并保留今日工作

解决方法:回退Master分支并保留今日工作到新分支

嘿,我完全懂你的处境——不小心把当天的工作提交到master分支,现在想把master拉回昨天的状态,同时把新代码留在专属分支里对吧?咱们一步步来搞定,确保万无一失:

第一步:确认新分支的安全性

首先得保证你今天的工作已经完整保存在新分支且推送到Bitbucket了:

  • 切换到你的新分支(比如叫today-feature):
    git checkout today-feature
    
    要是用Xcode操作的话,就去「Source Control」→「Checkout Branch」里选你的新分支。
  • 用git status或者Xcode的源码控制面板确认:没有未提交的改动,而且所有今日工作都在这个分支里,并且已经推送到远程了。

第二步:回退本地Master分支到昨日版本

接下来处理master分支:

  1. 切回master分支:
    git checkout master
    
  2. 找到昨天最后一个正常的commit哈希值:
    执行git log --oneline会显示所有提交记录,找昨天最后那条的哈希(比如a1b2c3)。在Xcode里的话,打开「Source Control」→「History」,找到昨天的提交,复制它的SHA值。
  3. 硬重置本地master到这个commit:
    git reset --hard a1b2c3
    
    ⚠️ 重点提醒:--hard会彻底删除master分支里这个commit之后的所有改动,所以一定要确认新分支已经存好所有今日工作再执行!

第三步:推送回退后的Master到Bitbucket

因为你之前已经把错误的提交推到远程master了,现在本地master比远程版本旧,需要强制推送覆盖:

git push origin master --force

如果用Xcode推送时提示冲突,你需要先在Xcode的设置里开启强制推送选项(或者直接用终端更稳妥)。

第四步:验证结果

  • 切换回master分支,查看代码是不是昨天的状态;再切回新分支,确认今日工作都完好。
  • 打开Bitbucket的master分支页面,确认远程版本已经更新到昨天的状态。

小提醒

以后记得先建分支再干活:用git checkout -b 新分支名创建并切换到新分支,在上面提交推送,就不会再不小心污染master啦!如果有其他团队成员拉过你之前错误的master版本,一定要通知他们同步更新,避免代码冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:26:34