如何恢复Git分离HEAD状态返回后被删除的原追踪忽略环境文件
找回被忽略后修改的环境文件最新版本
1. 先查本地未提交/暂存的内容
- 执行
git status,查看工作区是否存在未被追踪的环境文件(因为已加入.gitignore,Git会标记为untracked),如果有直接保留即可。 - 执行
git stash list,若之前用过暂存操作,检查列表中是否包含环境文件的修改记录,找到对应编号后用git stash apply stash@{n}恢复。
2. 检索Git所有历史记录找文件版本
哪怕没提交修改,只要曾经执行过git add,Git对象库就会留存版本。用以下命令列出所有涉及该文件的提交记录:
git log --all -- src/environments
找到最新的记录(无论是否提交到分支),记下哈希值,再用这条命令将对应版本导出到本地:
git show <提交哈希>:src/environments/你的环境文件名.ts > src/environments/你的环境文件名.ts
3. 通过reflog查找HEAD历史状态
Git的reflog会记录所有HEAD的移动操作,包括你切换旧提交、切回main的过程,可能能找到修改环境文件时的状态:
git reflog
找到切换到旧提交之前的哈希值,要么用git show <哈希>:src/environments/...导出文件,要么直接git checkout <哈希>进入该状态,复制文件后再切回main分支。
4. 修复.gitignore的遗留问题
找回文件后,别仅靠.gitignore处理已提交文件的追踪问题,先将文件从Git仓库的追踪列表中移除(保留本地文件):
git rm --cached src/environments/你的环境文件名.ts
提交这个变更,之后Git就不会再追踪该文件的修改,切换分支时也不会再出现文件丢失的情况。
内容的提问来源于stack exchange,提问作者John Fred Fadrigalan
相关产品推荐
相关产品推荐

