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

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

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

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

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

往期年度总结

往期文章

专栏文章

结语

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

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

相关推荐
沙蒿同学9 分钟前
我把架构约定编译成了会变红的测试:Wails v2 + Go + Vue3 桌面脚手架实战
前端·后端·github
cpolar技术支持12 分钟前
本地 Playwright 测试报告怎么远程复盘?Trace Viewer 跑起来后,用 cpolar 分享失败现场
前端·自动化测试·测试工具·cpolar·playwright
wordbaby12 分钟前
企业级后台管理系统路由设计与最佳实践指南
前端
胡志辉的博客22 分钟前
【完全开源】IP 纯净度检测 可一键部署到自己的CF
前端·javascript·chrome·ip·chromium
szephyr1 小时前
Git 分支管理实战:feature/release/hotfix 怎么用才不乱
git·分支管理·团队协作·工作流·hotfix
Hilaku1 小时前
作为面试官,我最怕遇到什么样的候选人?
前端·javascript·程序员
一木 之林1 小时前
手搓家庭服务器:二手装机、Docker部署、端口映射与frp内网穿透
服务器·人工智能·git·编辑器
TiDi1 小时前
Pinia优化重复请求
前端
烛之武1 小时前
Git教程笔记
git·gitee
web3d5201 小时前
01-用 Leafletjs 10 分钟搭一张水利一张图(Vue3 + Vite 实战)
前端·javascript