在GitHub Desktop撤销提交后,能否撤销该操作?提交及修改能否恢复?
GitHub Desktop撤销撤销提交及文件恢复问题解答
1. 撤销“undo commit”是否可行?原提交是否丢失?
- 执行“undo commit”后,原提交没有丢失,它只是从当前分支的HEAD上被移除,变成Git仓库中一个未被直接引用的提交。
- 可以通过Git命令恢复这次撤销操作:
- 打开仓库对应的终端(GitHub Desktop里可通过
Repository菜单选择Open in Terminal) - 运行
git reflog,找到执行undo commit之前的提交哈希值(一串7位以上的字母数字) - 运行
git reset --hard [提交哈希值],即可将当前分支恢复到原提交状态
- 打开仓库对应的终端(GitHub Desktop里可通过
2. 编辑中文件丢失的恢复方式
- 执行“undo commit”时,Git会检出旧版本文件覆盖当前工作区文件,这部分未保存的编辑内容不会进入回收站,属于版本切换导致的文件覆盖。
- 尝试以下恢复途径:
- 检查编辑器的本地历史记录功能(比如VS Code的本地历史、其他编辑器的自动备份),很多编辑器会留存编辑过程中的临时版本。
- 使用磁盘文件恢复工具扫描本地存储(注意不要向该磁盘写入新数据,避免覆盖可恢复的文件碎片)
3. 针对原需求的正确操作流程
你原本想移除提交中的特定文件、重新提交其他内容,正确步骤应该是:
- 执行软撤销提交(保留工作区和暂存区修改):
git reset HEAD~1 --soft - 将不需要提交的文件从暂存区移除:
git reset HEAD ./不需要的文件路径 - 若需要恢复该文件到修改前状态:
git checkout -- ./不需要的文件路径 - 最后提交剩余文件:
git commit -m "重新提交的说明"
内容的提问来源于stack exchange,提问作者bigjosh
相关产品推荐
相关产品推荐

