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

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

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

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

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

往期年度总结

往期文章

专栏文章

结语

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

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

相关推荐
IT_陈寒4 分钟前
React组件莫名重渲染?你可能忘了这个小细节
前端·人工智能·后端
鶴哥只手遮天16 分钟前
React 19.3.1 源码深度剖析-第 12 章(下)RSC 与 Flight 协议
前端·react.js·开源
catoop16 分钟前
用 Shell 包装函数,让单个命令拥有专属配置
git
deli00716 分钟前
TCP 三次握手到底发几个包?丢包重传动画实测一遍
前端
盟接之桥24 分钟前
盟接之桥谈线束数字化-按单入按单出:线束企业库存管理的破局之道
大数据·前端·网络·数据库·人工智能·制造
巴勒个啦28 分钟前
Prompt Engineering 实战:5 个让 AI 生成生产级业务代码的工程模式
java·前端
去伪存真29 分钟前
AI时代,古法编程的码农路在何方?
前端
计算机魔术师39 分钟前
从7月绕过沙盒到9月再曝违规,OpenAI的AI安全防线在漏什么
前端
我的div丢了肿么办1 小时前
element-plus表格使用:filter-method过滤导致出现无数据
前端·javascript·vue.js
F_Quant1 小时前
高股息+破净+PEG三因子:年化20%的背后,是一个“敢于证伪自己”的捡烟蒂策略
前端