VScode git 提交失败(git commit 失败),代码丢失,解决办法
方法:
1.先看vscode 报错信息是否有 Any lost modifications can be restored from a git stash:
2.再看 git stash list 是否存在暂存内容。
3.看 git status 是否有对应的问题文件并按命令解决问题
4.执行git stash pop 将暂存区的内容恢复到项目中,查看代码是否恢复。
5.解决文件冲突。
过程记录:
今天使用git 提交代码的时候发现代码突然丢失了。我的天,回想一下自己的操作万幸有git add. 过。
失败是在git commit失败后所以通过refog 查找 日志不行,这几个hash不行都是一样的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jI07MAQz-1678171672214)(https://img-log.csdnimg.cn/814cb86d44c8446b94c9345f656859f1.png)]
准备对代码做一次git处理怎么办?先把当前的项目在本地copy一份,特别是.git 文件小心对待。
我们知道git中有许多之前的操作记录,先看看这些记录还在不在。
说明之前的修改在git中都有保留。
看网上有些操作是逐个object中的文件进行恢复特别麻烦,我修改了150个文件,不可能用这个方法。
突然想起vscode 有时间线的功能,虽然好多文件都删除了,但是这个时间线应该也会保留部分数据,所以到文件夹中先对代码做一次备份,以防万一我把整个user都备份了。如果用git的方法失败了在看vscode 的时间线代码。
我们回到vscode 中 查看报错,代码不可能无缘无故的消失,一定有什么隐情。
我们看到提交失败的记录中有这么一句话:
这句话的意思是任何的修改都可以通过git stash 恢复。
好的我们开始相信这句话,按照提示输入
git stash list
发现他这里有暂存的内容没有但是我们并没有手动暂存,所以这个是提交失败后的自动暂存?。
使用git status 查看,发现有文件 显示如下
git add …" to include in what will be committed
这应该是这个文件有问题了导致的报红,我们使用它提示的命令:
执行完成后使用 再次git status 后显示没有红字了。说明问题解决了,可以把暂存的内容取出来了。
执行git stash pop
发现所有的代码都回来了,将报红的文件都解决冲突后就可以提交了。