执行rm -rf .git及强制推送命令后丢失提交,能否恢复重要项目内容?
恢复可行性及操作方案
你执行的rm -rf .git删除了本地所有Git提交记录,后续的强制推送已经用新的空初始提交覆盖了GitHub远程仓库master分支的历史,能否恢复取决于是否还存在未被覆盖的原有提交副本:
高成功率恢复路径(按优先级排序)
- 查找其他设备/协作者本地的仓库克隆:只要克隆的时间早于你强制推送的时间,该副本内完整保留了原有提交记录和文件,直接使用即可。
- 检查远程仓库的其他分支/标签:如果你之前创建过除master外的其他分支、或是打了版本标签,这些分支和标签对应的提交不会被本次强制推送覆盖,直接拉取对应分支内容即可恢复。
- 从GitHub留存的记录找回:
- 如果你能记得任意一条原有提交的哈希值,直接访问对应仓库的提交详情地址即可获取对应提交的完整内容。
- 若仓库之前提交过Pull Request、发布过Release,这些场景关联的提交不会被强制推送删除,可以从对应页面找回提交内容。
- 若有其他用户Fork过该仓库,Fork的副本会保留强推前的所有提交,可联系Fork者获取副本。
- 本地磁盘数据恢复:如果你的本地磁盘在删除.git目录后没有进行大量写入操作,可以尝试用专业数据恢复工具扫描磁盘,尝试找回被删除的原.git目录文件,有一定概率恢复本地提交记录。
无效恢复路径
你找到的全为null值的备份无恢复价值,无法从中提取原有文件内容。
最坏情况
如果以上路径全部无法走通,原有提交内容基本没有恢复可能。
内容的提问来源于stack exchange,提问作者rust dexter
相关产品推荐
相关产品推荐

