如何制作git stash包括尚未上演的新文件?

Sim*_*wsi 21 git git-extensions

我不是git的专家,但我已经使用它几年了.最近我注意到一些与藏匿有关的奇怪行为.它似乎只对我有用.

例如,今天我试图隐藏4个未提交的更改.1个文件被添加到存储,其余3个保留为未提交的更改.尝试了几次,在第一次尝试后,我刚刚收到"没有保存的本地更改",但状态仍显示3个未提交的更改.

然而,巧合的是,我发现当我第一次进行先前无法改变的变化时,它们将被正常隐藏.我玩过,这是可重复的:如果所有更改都未提交,则只保留一个更改.如果"问题"的变化被暂存,那么所有的变化都会被搁置(无论是否"好"变更是否上演都无关紧要,它将始终存储).

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

我正在使用Git for Windows 2.8.2和Git Extensions 2.48.05.

我是否尝试通过Git Extensions GUI或通过控制台存储更改并不重要.

编辑:如果我在存储之前暂存所有4个更改,当我进行存储弹出时,3个问题的更改将像以前一样暂存,但是总是存储的良好更改是未提交的.因此,存储弹出不会将状态转换为存储之前的状态.这也是可重复的.

Jon*_*ink 36

问题似乎是默认情况下该stash命令不包括未跟踪的文件.

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

git stash -u
Run Code Online (Sandbox Code Playgroud)

如果使用--include-untracked选项,所有未跟踪的文件也会被隐藏,然后使用git clean清理,使工作目录处于非常干净的状态.

  • 如[早期问题](http://stackoverflow.com/questions/835501/how-do-you-stash-an-untracked-file)的答案所述,使用`git stash -u`**将[永久]删除被忽略的文件夹](https://gitlab.com/tortoisegit/tortoisegit/issues/1200)** (9认同)
  • 命令git stash -u确实解决了这个问题,但是使用GIT扩展,最好有一个配置设置,当添加到存储中时会自动使用`-u`。在我的版本(2.51)中,似乎没有此设置。是否知道何时以及何时会发生(或已经完成?)? (2认同)
  • @Dominique 你可以做的一件事就是创建一个别名,这样你就不必担心添加 `-u` 标志:`git config --global alias.stashu "stash -u"`。然后使用以下命令调用别名:`git stashu` (2认同)
  • @Dominique 和其他人想知道,如果您谈论 Git 扩展、Windows Git GUI,而不是执行简单的存储,请选择创建存储并选中包括未跟踪的文件。 (2认同)