Mac本地XCode项目删除.git后丢失提交,能否恢复?
以下是针对你情况的可行恢复步骤,按优先级尝试:
优先检查XCode自动快照
XCode会自动为项目创建版本快照,和Git无关。打开你的XCode项目,点击顶部菜单栏File > Revert To > Browse All Versions,在弹出的时间线视图里查找回滚操作之前的版本,找到后点击"Restore"就能恢复对应状态的代码。尝试Time Machine恢复
如果你开启了Mac的Time Machine备份,打开Time Machine导航到项目所在文件夹,选择删除.git之前的时间点,恢复整个项目文件夹(包含原.git目录)。恢复后在项目目录执行git reflog,就能找到被回滚的提交记录,再用git cherry-pick <commit-hash>或者git reset --hard <commit-hash>恢复代码。检查Git残留数据
即便删除了.git文件夹,磁盘上可能还残留Git的对象数据(只要没被新数据覆盖)。在项目目录打开终端,执行:git fsck --lost-found命令会在当前新建的.git/lost-found目录下生成丢失的对象文件。你可以用
git show <对象哈希值>查看内容,找到目标提交后提取代码。查看XCode DerivedData临时文件
打开XCode偏好设置(Preferences > Locations),找到DerivedData的路径,进入对应项目的文件夹,里面可能有编译过程中保留的代码片段或临时文件,能帮你找回部分丢失的内容。
如果以上方法都没有效果,那数据大概率已经彻底丢失——因为你回滚后删除了包含提交记录的原.git目录,且无法恢复该目录,Git没有了存储提交对象的基础,就无法找回被回滚的更改。
内容的提问来源于stack exchange,提问作者Hiimdjango

