Git推送到远程仓库后如何恢复误删文件并解决git revert报错?
操作步骤
报错的核心原因:你当前工作目录中已经存在3个同名的未被git跟踪的文件,
git revert操作恢复被删文件时会覆盖这些本地文件,因此git主动终止了操作。
方案1:使用git revert完成恢复(保留删除提交的记录)
- 第一步:处理本地冲突的未跟踪文件
- 如果这3个本地文件无保留价值,直接删除:
rm MainUI/Common/KMessage/KMessage.mc MainUI/Common/KMessage/KMessage.rc MainUI/Common/KMessage/KMessage.res - 如果文件需要保留,先移动到其他目录备份:
mkdir -p ~/git_temp_backup && mv MainUI/Common/KMessage/KMessage.* ~/git_temp_backup/
- 如果这3个本地文件无保留价值,直接删除:
- 第二步:执行恢复操作
先通过git log --oneline找到你之前删除文件那次提交的commit哈希值(示例为a1b2c3d,替换为你实际的哈希值),执行:
执行完成后,被删除的3个文件就会恢复到工作区,同时恢复的改动会自动加入暂存区。git revert --no-commit a1b2c3d - 第三步:完成其他文件的改动
按需求修改其他文件,改动完成后执行提交:git add . git commit -m "恢复误删的KMessage相关文件,更新[你的改动说明]" - 第四步:推送到远程仓库
git push
方案2:直接拉取历史文件(操作更简单,无冲突风险)
如果你不需要保留删除文件那次提交的回滚记录,也可以直接从删除前的版本导出三个被删的文件,无需处理revert冲突:
- 先找到删除文件那次提交的commit哈希值(示例为
a1b2c3d,替换为你实际的哈希值),执行以下命令直接恢复文件:git checkout a1b2c3d~ -- MainUI/Common/KMessage/KMessage.mc MainUI/Common/KMessage/KMessage.rc MainUI/Common/KMessage/KMessage.res - 后续正常修改其他文件、提交、推送即可,操作和方案1的第三、第四步完全一致。
内容的提问来源于stack exchange,提问作者Poomani
相关产品推荐
相关产品推荐

