如何恢复Git Stash中特定的未追踪文件?
恢复Git Stash中的未追踪文件
当你用git stash -u(或git stash --include-untracked)暂存包含未追踪文件的内容时,常规的git checkout stash@{0} -- file命令无法恢复未追踪文件——原因是这些文件存储在stash快照的独立提交节点中,而非主stash提交的树结构里。
方法1:提取单个未追踪文件
使用git show命令将stash中的未追踪文件内容写入本地对应路径:
git show stash@{0}:relative/path/to/untracked-file > relative/path/to/untracked-file
替换relative/path/to/untracked-file为你要恢复的文件的相对路径(可从git stash show stash@{0} -u的输出中获取)。
方法2:通过stash的第三个父节点恢复
Git stash是一个合并提交,其中第三个父提交专门存储未追踪文件的快照,你可以直接指定这个节点来checkout文件:
git checkout stash@{0}^3 -- relative/path/to/untracked-file
这个命令会直接将目标未追踪文件从stash快照恢复到工作区。
方法3:恢复整个stash(适合需要全部文件的场景)
如果需要恢复stash里的所有文件(含已追踪和未追踪),直接执行:
git stash apply stash@{0}
若恢复后不需要保留该stash记录,可用git stash pop stash@{0}替代apply。
内容的提问来源于stack exchange,提问作者pm100
相关产品推荐
相关产品推荐

