出于某种原因,我的VS不会在“撤消更改”之后从更改视图中删除文件:
当我查看差异时,实际更改已消失,但我希望文件不显示。我想知道一个永久的解决方案。我已经知道我可以在VS之外进行藏匿或类似操作来隐藏文件。
我找到了解决办法。当我撤消时,然后剩下的文件选择阶段,它们就会消失!
答案 0 :(得分:4)
根据您的描述(撤消不会更改文件列表,暂存会强制更新),这听起来像是与 Visual Studio 2015 和 2017 相关的以下问题:
据微软称,Visual Studio 2019 也受到影响。该问题现在正在此 issue 中进行跟踪:
https://developercommunity2.visualstudio.com/t/Undo-changes-with-new-git-experience-pre/1170228
根本原因似乎与行尾有关:
微软:
<块引用>所以我们怀疑可能是 dotnet format
重写了行尾(并且只有行尾),所以现在 git status
报告有更改的文件。但是,如果您尝试实际 checkout-index,git 实际上不会改变任何东西。然而, git status 相信有变化,因为 stat-block 导致它相信已经发生了变化(因为已经发生了变化)。
验证这一点的一种方法是从命令行或 Visual Studio。
暂存所有内容(git add *)(您可以通过右键单击> stage 从visual studio执行此操作)
git status (或者,如果在 Visual Studio 中,它将自动刷新状态)
如果文件从视图中消失,则存在行尾问题,并且 git 突然意识到它们实际上是同一个文件。
记者:
<块引用>是的!暂存一切使所有文件消失:-)
微软:
<块引用>酷!所以这就是我们所知道的! 对于仅限 EOL 的更改,SHA 更改不会更改。 Git 显然在内部将这些存储为 LF-only checkout 和 checkout-index 都不会覆盖磁盘上的文件 基本上,由于 git 是我们这里的真相来源,我们会得到误导性信息。但是,我认为 git 可能在性能方面做出了正确的决定。话虽如此,从用户体验的角度来看,这非常令人困惑,因此我们将对此进行评估。 我们正在评估如何改进这种用户体验。
问题仍然存在,但似乎已经确定了根本原因。目前,只有解决方法。