在Android Studio 3.3中,弹出菜单,git菜单和“显示历史记录”之间的还原命令有何不同?

时间:2019-03-01 12:51:17

标签: git android-studio github

我在Android Studio 3.3的项目中使用Github。

我发现“还原”命令显示在三个位置,请参见图1,图2,图3-1和图3-2(图3-2是图3-1的详细信息窗口,而“还原”命令是在图3-2的左中间)。

这三个“还原”命令有什么不同?

图片1 enter image description here

图片2 enter image description here

图片3-1 enter image description here

图片3-2 enter image description here

2 个答案:

答案 0 :(得分:2)

TLDR:

图像1,Version Control-> Log-> Revert,编辑存储库,使其看起来像提交该提交之前的时间,并且可以选择进行提交。
图像2,VCS-> Git-> Revert...,删除选定文件的未提交更改。
图片3 Local History-> Show History的行为类似于1,但在特定于JetBrains的工具中,与Git无关。


详细信息:

  1. Version Control-> Log-> Revert实际上是在下面执行此操作: A revert, then add and commit

    • (:29处的reset只想恢复Git存储库以进行测试。)
    • 首先,它执行git revert,在Git的控制范围之外进行一些编辑,并且存储库变脏(需要提交)。
    • 然后,弹出一个提交窗口,要求您提交。
    • 第二,在确定要提交的文件后,分别创建git addgit commit
    • 结论:Version Control-> Log-> Revert = git revert(+ git add + git commit,可选)=编辑存储库就像提交之前一样。
  2. VCS-> Git-> Revert... 仅在存储库变脏时激活。实际上,这是在下面进行的: A rm, then checkout

    • 首先,它会执行git rm --cached -f
    • 然后,它执行git checkout HEAD
    • 结论:VCS-> Git-> Revert... = git rm + git checkout =删除所有未提交的更改。
  3. 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进行一次提交,即:进行新的提交,该操作将取消由还原的提交引起的更改。