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

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

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

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

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

往期年度总结

往期文章

专栏文章

结语

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

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

相关推荐
764331 分钟前
JavaScript ES6 继承 class
前端·javascript
袁代码7 分钟前
SwiftUI开发教程系列 - 第十二章:本地化与多语言支持
开发语言·前端·ios·swiftui·swift·ios开发
软件聚导航30 分钟前
在uniapp中使用canvas封装组件遇到的坑,数据被后面设备覆盖,导致数据和前面的设备一样
java·前端·uni-app
好开心3336 分钟前
javaScript交互补充2(动画函数封装)
开发语言·前端·javascript·html·ecmascript
将登太行雪满山_1 小时前
自存 关于RestController请求传参数 前端和后端相关
java·前端·spring boot
kali-Myon1 小时前
ctfshow-web入门-SSTI(web369-web372)下
前端·python·学习·web安全·flask·web·ssti
鸽鸽程序猿1 小时前
【前端】HTML
前端·html
程楠楠&M1 小时前
mongoDB的安装及使用
前端·数据库·mongodb·node
好奇的菜鸟1 小时前
Go语言中的类型
服务器·前端·golang
hummhumm1 小时前
第 14 章 -Go语言 错误处理
java·开发语言·前端·后端·python·sql·golang