Git仓库master分支文件变更丢失问题求助
解决Git文件变更丢失的思路
先定位2023年6月21日的目标提交,从
git log --stat输出里复制它的哈希值,执行git show <提交哈希> -- <文件名>,确认该提交里确实对目标文件做了1增9删的修改,以及修改后文件的具体内容。检查目标提交后是否有撤销或回滚操作:
- 执行
git reflog查看master分支的所有操作记录,排查是否有git reset、git revert这类可能抹除提交的操作。 - 如果找到回滚提交,执行
git show <回滚提交哈希> -- <文件名>,确认是不是该回滚操作丢弃了目标文件的修改。
- 执行
加上
--follow参数追踪文件历史:执行git log --follow -- <文件名>,因为如果文件在6月21日之后被重命名/移动,默认的git log <文件名>不会追踪改名前的提交,--follow会处理文件名变更的情况。检查分支合并时的冲突处理:
- 找到6月21日提交所在分支合并到master的合并提交,执行
git show <合并提交哈希> -- <文件名>,查看合并时该文件是否出现冲突,以及冲突解决是否错误丢弃了原有修改。
- 找到6月21日提交所在分支合并到master的合并提交,执行
排查路径大小写或拼写问题:如果仓库运行在区分大小写的系统(如Linux),确认你输入的文件名和提交里的路径大小写完全一致,比如提交里是
Docs/File.md,你输入的是docs/file.md,这时候git log会匹配不到,需要用完全一致的路径执行git log -- <正确路径>。检查是否存在孤儿提交:如果目标提交被从master分支移除但仍在本地仓库中,
git reflog会记录它的哈希,找到后可以用git cherry-pick <提交哈希>将该提交重新应用到master分支。
内容的提问来源于stack exchange,提问作者jairud
相关产品推荐
相关产品推荐

