重置工作副本的所有更改
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 不会对此文件执行任何操作,直到您将它添加到舞台上。
我正在使用 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 不会对此文件执行任何操作,直到您将它添加到舞台上。