假设我使用以下方法之一隐藏了一些更改:
git stash -u
git stash --include-untracked
Run Code Online (Sandbox Code Playgroud)
我可以通过存储区签出一个单独的文件
git checkout stash@{0} -- filename
Run Code Online (Sandbox Code Playgroud)
如果git知道"filename",那就行,但如果"filename"未跟踪则不起作用.有没有办法从藏匿处检查未跟踪的文件?
Jan*_*ger 18
git stash在内部创建特殊的黑魔法合并提交,以存储您的更改的不同部分.合并提交具有原始基本提交(当您存储时在分支顶部具有的内容)作为其第一个父级,一次性提交表示存储时作为其第二个父级的索引内容,并且(仅当您使用时--include-untracked)包含未跟踪文件作为其第三个父项的一次性提交.
因此,合并提交引用未跟踪的文件(作为其父项之一)......但它实际上并没有在自己的树中包含这些文件(如果这没有任何意义,要么你有一些东西要了解Git的内部结构......或者你对合并提交了解得太多,这整个结构看起来似乎太可怕了;)).
简而言之......要访问存储的未跟踪部分,请访问其第三个父级: git checkout stash@{0}^3 -- filename