如何在Xcode中删除错误或重复的commit提交记录?
Xcode删除多余/错误提交记录的操作方法
Xcode没有提供单独的删除commit的显式选项,所有删除操作本质都是基于Git的版本回滚逻辑,可根据commit是否推送至远程仓库选择对应方案:
情况1:错误Commit未推送到远程仓库
方案1:Xcode可视化操作
- 打开Xcode顶部菜单栏
Source Control> 选择当前项目对应的Git仓库 > 点击Show Commit History - 在提交记录列表中找到错误提交的上一条正常提交记录,右键选择
Reset <当前分支名> to This Commit - 弹出的模式选择窗口可按需选择:
- 选
Mixed:保留错误提交对应的代码修改,仅删除提交记录 - 选
Hard:彻底删除错误提交的所有内容,工作区代码回滚到对应提交状态
- 选
如果仅需要修改错误的提交信息,不需要删除整个提交,可在新的commit窗口勾选Amend选项,修改提交信息后重新提交即可覆盖上一条提交信息。
方案2:终端Git命令操作
- 打开项目根目录的终端,执行
git log查看提交记录,确认要操作的提交哈希值 - 删除最近1条提交、保留工作区修改:执行
git reset HEAD~1 - 彻底删除最近1条提交、丢弃所有对应修改:执行
git reset --hard HEAD~1 - 仅修改最近一次的提交信息:执行
git commit --amend编辑新的提交信息后保存即可
情况2:错误Commit已推送到远程仓库
注意:如果是多人协作的公共分支,不推荐直接删除远程提交,可能覆盖他人代码
单人使用的私有分支方案
- 先按照情况1的步骤在本地完成提交回滚,调整到正确的代码状态
- 执行
git push origin <当前分支名> --force强制推送本地提交记录,覆盖远程仓库的错误提交
多人协作的公共分支方案
不要使用强制推送,推荐生成反向提交抵消错误内容:
- 执行
git log拿到错误提交的哈希值(取前7位即可) - 执行
git revert <错误提交哈希值>自动生成一个反向提交,抵消错误提交的所有修改 - 执行
git push origin <当前分支名>正常推送即可,不会影响其他人的提交记录
内容的提问来源于stack exchange,提问作者swiftPunk
相关产品推荐
相关产品推荐

