如何解决代码提交错误分支?

使用场景:当我们将代码提交到错误的分支,我们想要把提交删除或者想要把提交应用到其他分支中,就可以使用下面两种方式来解决了。

  • 方式一可以解决直接在当前分支删除错误的提交记录。
  • 方式二可以解决删除错误提交记录(间接删除,重新设置一个分支),并将错误提交记录应用到其他分支。

方式一:使用git rebase -i commitid,打开交互模式,直接修改git提交记录

先通过git rebase -i commitid切换到删除commit的前一个commitid。-i 表示要进行交互式 rebase,<commit-hash>^ 表示要删除指定提交及之后的提交。这将打开一个文本编辑器,列出了要进行 rebase 的提交。

这样他只是删除了本地的记录,但是并没有更新远程仓库。

所以我们需要强制当前记录提交

js 复制代码
git push origin <branch> --force

如果直接执行git push他会告诉你需要拉取最新代码。如果执行了git pull前面做的工作就没用了。所以我们需要使用--force强制提交。

注意:最后git push一定要强制提交,不然按照他的提示拉取了远程代码,那么前面做的内容都没用了。

使用git rebase -i commitId可以在编辑区域操作很多内容,比如合并commit。

感兴趣的也可以了解一下其他的操作。

方式二:使用git checkout -b commitId创建分支 + git cherry-pick commitIds

如果不了解git cherry-pick,可以学习阮一峰老师的讲解。

首先我们需要使用git checkout -b commitId基于当前提交创建一个新分支。然后再使用git cherry-pick commitIds将错误提交分支之前中的commit合并过来。然后再将错误commit合并到其他分支上面。

如果你在操作时,git cherry-pick报错,解决办法。

git cherry-pick 命令通常用于将单个提交从一个分支应用到另一个分支。然而,当您尝试 cherry-pick 一个合并提交(merge commit)时,git 会报错并要求您提供 -m 选项,以指定您要选择哪个父提交。

合并提交有多个父提交,因为它们是两个或更多个不同的分支的合并点。所以,您需要告诉 git 从哪个父提交中选择更改。-m 选项后面应该跟着一个数字,表示您要选择哪个父提交。

通常,-m 1 表示选择第一个父提交,-m 2 表示选择第二个父提交,依此类推。可以通过git show <hash>来查看提交commitId。

例如,如果您有一个合并提交,并希它选择第一个父提交的更改,可以这样运行 git cherry-pick

bash 复制代码
git cherry-pick -m 1 <合并提交的SHA>

请注意,这个选项仅适用于合并提交,对于普通的单一提交,不需要使用 -m 选项。只有在 cherry-pick 合并提交时才需要指定父提交。

这里就是简单介绍一下思路,如果工作中遇见了就可以这样操作试一试。

往期年度总结

往期文章

专栏文章

结语

本篇文章到此就结束了,欢迎在评论区交流。

🔥如果此文对你有帮助的话,欢迎💗关注 、👍点赞 、⭐收藏✍️评论, 支持一下博主~

相关推荐
唐叔在学习几秒前
听说有老哥分不清Git branch和tag?这不看看嘛
git·后端
法欧特斯卡雷特2 分钟前
Kotlin 2.2.20 现已发布!下个版本的特性抢先看!
android·前端·后端
yongche_shi3 分钟前
第二篇:Python“装包”与“拆包”的艺术:可迭代对象、迭代器、生成器
开发语言·python·面试·面试宝典·生成器·拆包·装包
小意恩6 分钟前
el-table表头做过滤
前端·javascript·vue.js
小桥风满袖8 分钟前
极简三分钟ES6 - 迭代器Iterator
前端·javascript
小菜全8 分钟前
ElementUI 组件概览
前端·vue.js·elementui
JarvanMo18 分钟前
提升生产力:每个 iOS 开发者都应该知道的 10 个 Xcode 技巧
前端
玲小珑35 分钟前
LangChain.js 完全开发手册(七)RAG(检索增强生成)架构设计与实现
前端·langchain·ai编程
独行soc1 小时前
2025年渗透测试面试题总结-60(题目+回答)
java·python·安全·web安全·adb·面试·渗透测试
前端小巷子1 小时前
原生 JS 打造三级联动
前端·javascript·面试