`git stash push - <path>` - 删除未跟踪的文件?

时间:2018-03-22 20:11:08

标签: git

所以我只想隐藏某个特定子目录中的一些更改,然后运行git stash push -- subdir。这似乎在该目录中具有不可撤销的已删除未跟踪文件,如checkout(它们未保存到存储中,也未保留在我的工作树中)。普通git stash单独留下未跟踪的文件,这就是我期望git stash push同样做的原因。

Git版本2.14.3(Apple Git-98)。

问题:

  • 哪里记录了这种情况会在没有-a / --all的情况下发生?我能看到的最接近的是:

      

    当pathpec被赋予git stash push时,新的存储条目仅记录与pathspec匹配的文件的修改状态。然后,索引条目和工作树文件也会回滚到HEAD中的状态,仅用于这些文件,保留与pathspec不匹配的文件。

  • 是否有希望获取我的文件?甚至备份文件.xxx~都已消失。

  • 我应该在全局Git配置中设置什么,以便永远再次发生?

我有几年的Git经验,而且我很少设法搞砸这个。

1 个答案:

答案 0 :(得分:0)

我打算将其作为副本关闭,但我会首先回答几个要点:

  
      
  • 在哪里记录......
  •   

不是:它只是一个错误。

  
      
  • 是否有希望收回我的文件?
  •   

不是通过Git。如果你的操作系统有#34;取消删除&#34;或类似MacOS&#34;时间机器&#34;备份,看那里。

  
      
  • 我应该在全局Git配置中设置什么,以便永远再次发生?
  •   

不幸的是,没有什么可设置的。只是避免在早于bug修复的Git版本中使用特殊的stash-by-path功能(v2.13.0,其中引入了该功能但是有缺陷,直到v2.16.2修复它)。

(请注意,您甚至可以将git stash别名替换为检查参数的脚本,因为Git不会让您覆盖内置函数。您可以使用shell来替换git本身,并检查动作词stash,然后检查参数,但这有点痛苦。)