重置工作副本的所有更改

Reset all changes from working copy

我正在使用 SourceTree,我想重置我在工作副本中所做的 所有 更改

为了一些测试,我创建了三个 Java class 文件,一个是新的,一个是我更新的,最后一个是我从工作副本中删除的:

New.java
Update.java
Remove.java

全部重置 适用于更新和删除的 class 文件,但不适用于新文件:

重置后我必须手动删除 New.java class:

总结:

全部重置 后,Update.java 文件的更新消失了,被删除的 Remove.java 文件也恢复了。 完美! 我唯一不明白的是为什么我必须手动删除新的 New.java 文件?难不成是我误会了?

提前致谢!

我不知道 SourceTree,但我猜 'Reset All' 就像做 git checkout . 一样,它将像您描述的那样恢复所有跟踪的文件。要删除未跟踪的文件,command-line 等效项将是 git clean -f 或者如果目录也受到影响 git clean -fd 并且还包括被 .gitignore 和类似 git clean -fdx 忽略的文件。所以我猜你在 SourceTree 中搜索 Clean All 选项来删除未跟踪的文件。

如果 New.java 是一个从未被暂存的新文件,git 重置将永远不会删除该文件,因为 git 不知道如何处理它。实际上,New.java 是一个未跟踪的文件,并且 git 不会对此文件执行任何操作,直到您将它添加到舞台上。