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

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

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

方式一:使用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 合并提交时才需要指定父提交。

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

往期年度总结

往期文章

专栏文章

结语

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

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

相关推荐
万少4 小时前
HarmonyOS官方模板集成创新活动-流蓝卡片
前端·harmonyos
-To be number.wan7 小时前
C++ 赋值运算符重载:深拷贝 vs 浅拷贝的生死线!
前端·c++
噢,我明白了7 小时前
JavaScript 中处理时间格式的核心方式
前端·javascript
纸上的彩虹8 小时前
半年一百个页面,重构系统也重构了我对前端工作的理解
前端·程序员·架构
be or not to be8 小时前
深入理解 CSS 浮动布局(float)
前端·css
LYFlied9 小时前
【每日算法】LeetCode 1143. 最长公共子序列
前端·算法·leetcode·职场和发展·动态规划
老华带你飞9 小时前
农产品销售管理|基于java + vue农产品销售管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小徐_23339 小时前
2025 前端开源三年,npm 发包卡我半天
前端·npm·github
GIS之路10 小时前
GIS 数据转换:使用 GDAL 将 Shp 转换为 GeoJSON 数据
前端
JIngJaneIL10 小时前
基于springboot + vue房屋租赁管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端