当我在 Git 中存储未跟踪的文件时,我错过了什么选项,但它没有使用 git stash pop 恢复?

What option did I miss when I stashed untracked file in Git, but it didn't restore with git stash pop?

我同时测试了两件事,工作树状态如下:

Changes not staged for commit:
    modified:   component/file.html
    modified:   component/file.scss
    modified:   component/file.ts
    modified:   component2/file.scss

Untracked files:
    common/file.scss

我决定暂时隐藏所有 scss 文件以专注于其他 git stash push -m "scss files for later" -- *.scss 所以我的工作树现在看起来像这样:

Changes not staged for commit:
    modified:   component/file.html
    modified:   component/file.ts

后来我弹出了相同的隐藏文件,但是未跟踪的 scss(显然 隐藏)文件没有弹出:

Changes not staged for commit:
    modified:   component/file.html
    modified:   component/file.scss
    modified:   component/file.ts
    modified:   component2/file.scss

当我弹出(相对于应用)藏品时,藏品参考现在不见了。

我应该在 pop 上应用某种标志吗?
或者当我推送存储时文件已经消失了(意思是:我是否应该在推送上应用某种标志)?

(git 版本 2.15.0)


重现要点的步骤:https://gist.github.com/keinajar/c52d90cded491f82ffbbf5939fc1b044

参考要点:如果我尝试 git stash push -- common/d.scss 而不是 *.scss 我得到的错误是(根据当前答案)预期的结果:

error: pathspec 'common/d.scss' did not match any file(s) known to git.
Did you forget to 'git add'?

所以不是我缺少选项,这是一个错误?

stash 不影响未跟踪的文件。您在 pushpop 之间用它做了一些事情。

根据 documentation for push 命令,您需要使用 --include-untracked 标志(或 -u)来隐藏未跟踪的文件。

关于这种奇怪的行为。是的,这是一个错误。您可以在 mailing list.

中找到更多信息

如其所说:

Currently when 'git stash push -- ' is used, untracked files that match the pathspec will be deleted, even though they do not end up in a stash anywhere.