从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] 将原有记录遴选过来,直接再改动一些,这种类似手段,直接当做新开发的分支使用就行了,只要代码内容正确即可,老分支直接删除即可,当然也可以删除后直接改名回来

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

相关推荐
Flynt3 小时前
axios 被投毒半年后,我把 npm 的"安全防线"实测了一遍:最信任的 SHA512 是安慰剂
前端·npm·node.js
excel4 小时前
Base62 和 Base64 有什么区别?
前端
风骏时光牛马5 小时前
大模型底层架构与AI源码深度剖析
前端
掘金挖土6 小时前
前端手摸手跑路之 AI 应用开发(九)
前端·后端
中文呀8 小时前
三维 GIS 离线缓存实战:逆向 CesiumOfflineCache,并亲手为它补上"自动更新"能力
前端
前进前进前进9 小时前
TRAE 全链路实战:做了一个警示牌一键生成器:纯 Canvas、单文件、零依赖
前端
小万74210 小时前
God‘s Eye View 深度解析:15 路公开信号 + CesiumJS 的浏览器级 OSINT 控制台,60 帧渲染的“真实间谍卫星模拟器”
前端
IT星宿10 小时前
浏览器标签页全是一个图标:我用名字哈希生成 favicon,让每个项目都有身份标识
前端