从git更新本地提交记录到更新已经推送到远端记录

git的提交历史记录出现问题了,能修正常见的几种方案

未提交到远端:

1.粘贴打法(其他手段都不行的话,这是一个不会丢失修改的保底方案,因为有备份) 复制粘贴一份代码,例如只有最新的一次,直接it reset HEAD~1往前几次记录就几次,然后直接将新代码粘过来替换,这也是最原始粗暴的方案

当然也可以直接从远端直接拉去一个新分支,然后粘贴替换在提交也行

2.如果只有最新的一次,直接it commit --amend -m "最新的正确的提交信息"

如果中间有一次是错误的,直接git rebase -i HEAD~1 此间往前几次记录就倒几次,执行后会提示一个修改的内容,将 pick 改成 reword 就可以修改提交历史了,保存后继续,有冲突处理冲突,如果还有修改提示继续修改 reword,然后继续即可,可以使用 git rebase --continue继续、git rebase --abort结束(pick采纳、reword保留提交修改message、s(squash合并到前一次提交)、fixup合并到前一次提交并丢掉message、drop删除提交),缺点是如果有很多冲突很麻烦

还有就是从没问题前的一次提交,直接it checkout -b 新分支然后使用git merge --squash 原分支,将原分支的内容一次性合并压缩到一次提交中合并,然后使用 git commit -m "新的message" 直接提交即可修复,缺点是其他的提交也被合并到一个了

如果提交到远端:

1.上面的方法仍然可以使用,对于换新分支的,直接放心推送到远端就行了,删除原分支,取而代之即可

2.对于没有换分支,使用正规手段解决的,例如git rebase这种,修改了直接强制推送到远端即可,如果是公共分支有其他人一起开发,使用git push --force-with-lease origin uat(目标分支uat),安全推送到远端,不会因为别人也有操作直接覆盖别人的内容,个人分支直接 git push --force origin uat(目标分支uat) 即可

ps:对于自己的分支,万金油手段,切出一个新分支,将老代码直接粘贴过来,或者执行git cherry-pick [commitid] 将原有记录遴选过来,直接再改动一些,这种类似手段,直接当做新开发的分支使用就行了,只要代码内容正确即可,老分支直接删除即可,当然也可以删除后直接改名回来

对于公共分支,必要时机也可以这么使用(剔除多余的提交,很常见),直接删除原有分支到远端,根据某次提交检出新分支名字一样即可,这样就可以重新合并新的提交了

相关推荐
啾咪orJIUMI1 小时前
Vue 3 + 高德地图封装实战:点位、区域、Loca 流光与 Vue 信息窗体
前端·vue.js
掘金者阿豪1 小时前
AI数据库不只是向量检索:从数据语义到库内智能计算的技术演进
前端
梦里寻码1 小时前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法
FRing031 小时前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2
SameX2 小时前
HarmonyOS ArkUI Dialog 复用 用 @CustomDialog + enum type 做多类型统一管理的做法
前端
AiMan2 小时前
豆包爱学还是不可以导出左侧所有对话,只能单容导出,方法不对吗
前端
AiMan2 小时前
Grok生成的内容能否下载吗?
前端
徐小夕3 小时前
JitArchives,一款基于JitWord协同AI文档打造的企业级电子档案系统
前端·vue.js·github
陈随易3 小时前
Node.js 2026上半年都有哪些性能提升?
前端·后端·程序员
墨林陌3 小时前
AI 热点日报(2026-11-09):苹果代理式Siri曝光,Anthropic推进IPO,编码智能体实测翻车
前端