当我在 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
不影响未跟踪的文件。您在 push
和 pop
之间用它做了一些事情。
根据 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.
我同时测试了两件事,工作树状态如下:
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
不影响未跟踪的文件。您在 push
和 pop
之间用它做了一些事情。
根据 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.