赞
踩
我遇到了git的合并bug,导致代码丢失:
流程是从master拉出一个开发分支A开发功能,上线后,再继续从A分支拉出一个AA分支继续开发功能,由于上线需要重命名一个以日期为标志的分支,我就在AA分支的基础上创建了release/2022/04/11分支。
此时由于master提交了很多其他同事分支贡献的代码,我将master代码合并到release/2022/04/11分支,不出意外的出现了冲突(注意,冲突才会导致合并异常导致丢失代码,但是这个代码丢失是在合并后,还未处理冲突前,未动任何文件(包括暂存区的文件)就立刻丢失了),但是丢失的文件并非是冲突文件,并且搜索不到对应文件修改的记录。
下面是2张关于丢失代码的某个文件内容的合并前对比:
出现问题是在上面这个最新的Merge,代码会丢失
点击右侧的Browse Files进去查看文件目录,并且点击到被丢失代码的那个文件后,现象如下:
神奇的是,查了仓库的文件记录,发现提交记录在history中可以看到(2周前),但是文件内只显示上一个版本的内容(1个月前)
点击右上角的History后:
注意,这边这个文件的History列表里显示的记录中,并不包含我的修改,也就是说,排除了我本地修改了这个文件,导致这个文件被git认为是最新版本,进而取代master代码的可能。
PS:该问题导致了我们历史两次丢失代码,务必引起重视
相关git原理(含合并原理)
两次代码丢失现象为:
应对的办法是:无论是什么环境,当一个新功能(或者新版本)需要开发,就必须严格从master拉出代码,不允许从子分支拉出
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。