如何在Git所有分支与Stash中查找文件的历史修复版本?
查找修复后的
tools/install-wamp-router.js版本方案 1. 深度排查所有提交记录(含已删除分支、本地操作痕迹)
之前的git log命令可能遗漏了部分提交,试试以下更全面的命令:
- 包含reflog记录(覆盖本地所有曾存在过的提交,比如被reset、删除的分支):
git log --follow --full-history --all --reflog -- tools/install-wamp-router.js - 直接遍历所有Git对象,定位包含该文件的提交:
得到哈希后,用git rev-list --all --objects | grep tools/install-wamp-router.jsgit show <提交哈希>:tools/install-wamp-router.js查看文件内容,确认是否为修复版本。
2. 检查暂存区与工作区未提交内容
- 查看暂存区中的文件版本:
git show :tools/install-wamp-router.js - 对比暂存区与当前工作区的差异:
git diff --cached tools/install-wamp-router.js
3. 批量遍历36个Stash
用脚本自动检查每个stash是否包含目标文件,无需手动逐个查看:
for i in $(seq 0 35); do echo "=== Stash #$i ===" # 检测当前stash是否涉及目标文件 if git stash show -p stash@{$i} | grep -q "tools/install-wamp-router.js"; then # 输出stash的基本信息 git stash list | grep "^stash@{$i}" # 输出该文件的修改差异(如需完整内容,替换为git show stash@{$i}:tools/install-wamp-router.js) git stash show -p stash@{$i} -- tools/install-wamp-router.js fi done
4. 提取修复版本
找到目标版本后,将内容覆盖当前损坏文件:
- 从提交提取:
git show <提交哈希>:tools/install-wamp-router.js > tools/install-wamp-router.js - 从stash提取:
git show stash@{$编号}:tools/install-wamp-router.js > tools/install-wamp-router.js
内容的提问来源于stack exchange,提问作者GregRos
相关产品推荐
相关产品推荐

