如何使 git stash 包含尚未暂存的新文件?

How to make git stash include new files that have not been staged?

我不是 git 方面的专家,但我已经使用了几年。最近我注意到一些与隐藏有关的奇怪行为。它似乎只是部分地为我工作。

例如,今天我试图隐藏 4 个未提交的更改。 1 个文件被添加到存储中,其余 3 个作为未提交的更改保留。尝试了几次,在第一次尝试后我得到了 "No local changes to save",但状态仍然显示 3 个未提交的更改。

但是偶然发现,当我第一次暂存以前不可隐藏的更改时,它们将被正常隐藏。我玩过,这是可重复的:如果所有更改都未提交,则只有一个更改被隐藏。如果 "problem" 更改已暂存,则所有更改都将被隐藏(无论 "good" 更改是否已暂存,它始终会隐藏)。

这是一个错误还是我做错了什么?

我正在为 Windows 2.8.2 和 Git Extensions 2.48.05 使用 Git。

无论我是尝试通过 Git 扩展 GUI 还是通过控制台来隐藏更改都没有关系。

编辑:如果我在存储之前暂存所有 4 个更改,当我执行 stash pop 时,会像以前一样暂存 3 个问题更改,但始终存储的好的更改未提交。所以 stash pop 不会将状态返回到 stash 之前的状态。这也是可重复的。

问题似乎是默认情况下 stash 命令不会包含未跟踪的文件。

要包含未跟踪的文件,请使用 -u (--include-untracked) 标志:

git stash -u

If the --include-untracked option is used, all untracked files are also stashed and then cleaned up with git clean, leaving the working directory in a very clean state.