前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次测试环境git翻车经历

记一次测试环境git翻车经历

作者头像
查拉图斯特拉说
发布2023-12-09 10:43:24
1730
发布2023-12-09 10:43:24
举报
文章被收录于专栏:后端架构后端架构

本来想拉一个功能分支进行新的功能开发,合并代码发现没有冲突居然有文件被修改了,贸然选择最近的一次回滚提交,没想到不假思索的push -f 导致一部分dev主干的代码不见了。

事故记录

开发分支origin/dev,功能分支file

合并之后发现我并没有修改任何代码,冲突都是选择dev分支的。但是却有一两个文件自动修改了,本能的觉得先会退再说然后再找原因,然后就选中最近的一个点,进行行了push -f,然后错误就产生了。

当我选中第二个点之后就变成了这样

git log也变成这样

这是reflog日志

代码语言:javascript
复制
4b9a2ba6c (HEAD -> dev, origin/prod, prod, file) HEAD@{0}: reset: moving to 4b9a2ba6ca2bcd745464a52f9cc63777035b96c1
2b5dc76c2 (origin/dev) HEAD@{1}: merge origin/dev: Fast-forward
4b9a2ba6c (HEAD -> dev, origin/prod, prod, file) HEAD@{2}: reset: moving to 4b9a2ba6ca2bcd745464a52f9cc63777035b96c1
2b5dc76c2 (origin/dev) HEAD@{3}: commit (merge): Merge branch 'file' into dev
46cb1af51 (origin/dev, dev) HEAD@{4}: checkout: moving from dev to dev
46cb1af51 (origin/dev, dev) HEAD@{5}: checkout: moving from 0cc0f3332769c4c920c1ef5eac68ea5d5598879c to dev
0cc0f3332 HEAD@{6}: checkout: moving from dev to 0cc0f3332
16d26a5a8 (origin/home, home) HEAD@{7}: reset: moving to HEAD@{1}
4b9a2ba6c (HEAD -> dev, origin/prod, prod, file) HEAD@{8}: checkout: moving from home to dev
16d26a5a8 (origin/home, home) HEAD@{9}: checkout: moving from dev to home
4b9a2ba6c (HEAD -> dev, origin/prod, prod, file) HEAD@{10}: reset: moving to 4b9a2ba6ca2bcd745464a52f9cc63777035b96c1
836279e82 HEAD@{11}: commit (merge): Merge branch 'file' into dev
46cb1af51 (origin/dev, dev) HEAD@{12}: checkout: moving from file to dev
4b9a2ba6c (HEAD -> dev, origin/prod, prod, file) HEAD@{13}: checkout: moving from prod to file
4b9a2ba6c (HEAD -> dev, origin/prod, prod, file) HEAD@{14}: commit: ops:修复冲突
bd0e9531b HEAD@{15}: commit (merge): Merge remote-tracking branch 'origin/home' into prod
878c72a08 HEAD@{16}: checkout: moving from dev to prod
46cb1af51 (origin/dev, dev) HEAD@{17}: checkout: moving from prod to dev
878c72a08 HEAD@{18}: reset: moving to HEAD
878c72a08 HEAD@{19}: reset: moving to HEAD
878c72a08 HEAD@{20}: checkout: moving from dev to prod
7c4f807e4 HEAD@{21}: merge origin/home: Merge made by the 'ort' strategy.
0cc0f3332 HEAD@{22}: merge origin/home: updating HEAD
0cc0f3332 HEAD@{23}: checkout: moving from home to dev
16d26a5a8 (origin/home, home) HEAD@{24}: commit: ops: 更新测试用例

处理

还好同事有本地最新的代码,直接覆盖解决了分支危机,之后还是另可合并也不要轻易强制推送。

事后总结

后面根据最新的de分支提交记录,查看记录找到46cb1af51点是最新的

执行命令: git reset --hard 46cb1af51

\HEAD 现在位于 46cb1af51 Merge branch 'prod' into dev

呼终于回来了,面对困难的时候还是要冷静思考,git的操作和后悔机制还是很好的,360度无死角解决你各种问题,简直良心工具。

分析结果

这还是对git的异常情况处理少,简单的提交合并谁都会,但是碰到问题还是的深入研究,这次的问题主要还是选错了分支回退的点,选中了file分支的某个点,然后回到了file分支,而不是根据dev主干上某个合并的点进行回退,git自然的把file分支记录当成了主干,把dev分支当成了合并过来的代码。所以才产生了最近几天的记录都没有了的情况。只是大意手残选了一个最近的点进行了push,push容易恢复难啊,以此记录错误经历。

最后

点赞关注评论一键三连,每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

引用

Git进阶系列 | 8. 用Reflog恢复丢失的提交_git reflog 恢复-CSDN博客

Git 命令 checkout、reset、revert、reflog 使用介绍_git reflog-CSDN博客

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 事故记录
  • 处理
  • 事后总结
  • 分析结果
  • 最后
  • 引用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档