You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行git stash apply未恢复暂存的未跟踪文件问题求助

问题原因与解决办法

核心原因

当git stash apply遇到已跟踪文件的合并冲突时,Git会中断完整的stash恢复流程,优先处理冲突文件的合并。未跟踪文件在stash中是以"新增文件"的形式存储的,此时Git不会自动创建这些文件——即使你确认当前工作区没有同名文件,冲突触发的流程中断也会阻止未跟踪文件的恢复。

关于你提到的Git版本bug:Git 2.24至2.33版本确实存在过未跟踪文件无法从stash恢复的问题,但2.34版本已经修复了该bug,你当前使用的2.34.1应该不受此问题影响,你的情况更可能是冲突导致的流程中断。

解决步骤

1. 手动从stash提取未跟踪文件

直接从stash中导出目标未跟踪文件到本地:

# 替换为实际的未跟踪文件路径
git show stash@{2}:path/to/your-untracked-file > path/to/your-untracked-file

如果不确定文件路径,可以先查看stash中所有未跟踪文件的列表:

git stash show -p stash@{2} | grep "new file:"

2. 解决冲突后重新恢复stash

先确保已跟踪文件的冲突完全解决(标记为已解决、暂存并提交),然后重新执行stash恢复:

# 先解决冲突,执行 git add <resolved-files> 和 git commit
git stash apply 2 --index

--index参数会尝试恢复stash时的暂存状态,能提升未跟踪文件恢复的成功率。

3. 用新分支完整恢复stash

如果上述方法无效,可以创建新分支来完整恢复stash内容,再合并到当前分支:

# 创建新分支并将stash内容恢复到该分支
git stash branch temp-stash-branch stash@{2}
# 此时未跟踪文件应该会正常出现在新分支中
# 切换回原分支,合并temp-stash-branch的修改
git checkout your-original-branch
git merge temp-stash-branch
# 可选:删除临时分支
git branch -D temp-stash-branch

内容的提问来源于stack exchange,提问作者user1021

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 02:32:40