删除本地.git文件夹并重新提交后,如何用备份恢复Git提交历史?
解决方案
别慌,手里握着原.git文件夹的备份就等于攥住了救命稻草!咱们一步步把远程仓库的历史恢复回来,同时保留你后来在Unity里做的开发内容:
先做好双重备份,避免操作失误
把你当前正在工作的整个项目文件夹复制一份到安全的位置(比如桌面的临时文件夹),万一接下来的操作出问题,还能回退到现在的状态。替换回原始的
.git仓库- 回到你当前的项目根目录,删除那个后来新建的无用
.git目录:- macOS/Linux:
rm -rf .git - Windows:
rmdir /s .git
- macOS/Linux:
- 把你之前备份的原
.git文件夹复制到项目根目录下,这样本地仓库就恢复了原来完整的提交历史。
- 回到你当前的项目根目录,删除那个后来新建的无用
合并你后来的开发内容
把你在Unity里完成的那些新开发文件(如果刚才备份时移走了的话)复制回项目目录。现在执行git status,你会看到这些新增/修改的文件处于未跟踪状态。提交新更改并修复远程仓库
- 先把新内容添加到暂存区:
git add . - 提交这些更改:
git commit -m "Add recent Unity development work" - 最后强制推送到远程仓库,覆盖掉之前错误提交的历史:
git push -f origin master
- 先把新内容添加到暂存区:
注意:强制推送(
-f参数)会直接覆盖远程仓库的历史,如果有其他协作者在这个仓库工作,一定要提前通知他们,让他们先备份自己的本地仓库,然后重新拉取正确的版本,避免冲突。
事后提醒
以后遇到Git错误时,千万别随便删除.git目录——这个目录是Git仓库的核心,删了就等于丢了本地所有提交历史。先尝试搜索错误信息找解决方案,或者先备份.git再操作,能避免很多麻烦!
内容的提问来源于stack exchange,提问作者James O'Hanlon




