我在Android Studio 3.3的项目中使用Github。
我发现“还原”命令显示在三个位置,请参见图1,图2,图3-1和图3-2(图3-2是图3-1的详细信息窗口,而“还原”命令是在图3-2的左中间)。
这三个“还原”命令有什么不同?
答案 0 :(得分:2)
TLDR:
图像1,Version Control
-> Log
-> Revert
,编辑存储库,使其看起来像提交该提交之前的时间,并且可以选择进行提交。
图像2,VCS
-> Git
-> Revert...
,删除选定文件的未提交更改。
图片3 Local History
-> Show History
的行为类似于1,但在特定于JetBrains的工具中,与Git无关。
详细信息:
Version Control
-> Log
-> Revert
实际上是在下面执行此操作:
reset
只想恢复Git存储库以进行测试。)git revert
,在Git的控制范围之外进行一些编辑,并且存储库变脏(需要提交)。git add
和git commit
。Version Control
-> Log
-> Revert
= git revert
(+ git add
+ git commit
,可选)=编辑存储库就像提交之前一样。 VCS
-> Git
-> Revert...
仅在存储库变脏时激活。实际上,这是在下面进行的:
git rm --cached -f
git checkout HEAD
VCS
-> Git
-> Revert...
= git rm
+ git checkout
=删除所有未提交的更改。 Local History
-> Show History
is a standalone built-in VCS managed by IntelliJ IDEA(以及其他JetBrains IDE,包括从IntelliJ IDEA社区修补的Android Studio),它与该Git没有关系,或者其他类型的VCS,如果您执行File
-> Invalidate Caches / Restart
-> Invalidate
,则将被清除。 Revert
的行为类似于Version Control
-> Log
-> Revert
,都将源恢复为历史记录。
答案 1 :(得分:1)
VCS -> Git -> Revert...
不会还原提交,只会还原本地暂存的更改。
与unstage changes added to the index等效,git reset HEAD
。
Log
中显示的还原实际上将git revert
进行一次提交,即:进行新的提交,该操作将取消由还原的提交引起的更改。