首页 > 解决方案 > 如何在 Android Studio 中使用 Git 命令恢复和删除提交?

问题描述

例如,我在一个分支上做了提交 1 和提交 2。我想恢复提交 2 并将其删除,因此我无法在 Android Studio 的 Git 选项卡和 GitHub 上看到它。请让我知道我该怎么做?我对 Git 和 GitHub 很陌生。我也尝试过以下命令

git reset HEAD~1

标签: git

解决方案


你很近。您需要指定重置模式。您在未指定模式的情况下运行的命令将使用默认值,相当于:

git reset --mixed HEAD~1

我假设您对此不满意,因为即使它删除(或更准确地说是隐藏)提交 2,提交 2 中的所有更改仍作为待处理更改保留在您的驱动器上。那时,您可以撤消所有这些待处理的更改以到达您想要的位置,这又回到了提交 1,就好像您根本没有提交 2 一样。如果您仍然有提交 2,那么您要运行的命令是:

git reset --hard HEAD~1

请注意,这HEAD~1与您当前正在进行的提交的父级相同。因此,如果您当前处于提交 2,那么 HEAD~1 将是提交 1。或者,您也可以这样做:

git reset --hard commit-1-ID # commit-1-ID is the hash, e.g. a1b2c3d4

如果您已经将提交 2 推送到 GitHub,那么在完成重置后,您需要强制推送您的分支以替换 GitHub 上的分支副本,如下所示:

git push --force-with-lease

旁注:你说,“我想恢复提交 2 ......”,在 Git 中,实际上有一个名为的命令revert,您可以使用它来撤消全新提交中特定提交的更改。(因此,在您的示例中,您进行了提交 3,这与提交 2 相反,有效地将您的状态恢复为提交 1,但在您的历史记录中有 2 个额外的提交。)我可以告诉您您想要reset,因为您不想能够再看到提交 2,但revert如果您愿意,请意识到确实存在的选项。


推荐阅读