git - 如何在 Android Studio 中使用 Git 命令恢复和删除提交?
问题描述
例如,我在一个分支上做了提交 1 和提交 2。我想恢复提交 2 并将其删除,因此我无法在 Android Studio 的 Git 选项卡和 GitHub 上看到它。请让我知道我该怎么做?我对 Git 和 GitHub 很陌生。我也尝试过以下命令
git reset HEAD~1
解决方案
你很近。您需要指定重置模式。您在未指定模式的情况下运行的命令将使用默认值,相当于:
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
如果您愿意,请意识到确实存在的选项。
推荐阅读
- python - 找不到 TIFF 头文件(python 上的 tifflib 错误 - Ubuntu 20.04)
- azure - 如何在 ARM 模板中创建 Key Vault 托管存储帐户?
- html - 如何在 CSS 中选择包裹的 flex 行的最后一项
- html - 我怎样才能使按钮正确,修复中间部分并使所有内容都可以调整大小
- javascript - 使用动态模式验证时,响应式表单始终无效
- rasa - 如何以 rasa 形式启动 rasa 动作
- php - 如果我为已在购物车中的产品单击“添加到购物车”按钮,如何重定向到购物车页面
- reactjs - 无法使用 Redux 加载数据
- amazon-dynamodb - DynamoDB 建模问题:玩家 1 和玩家 2 之间的游戏表,如何获取涉及给定玩家的所有游戏
- selenium - 如何在铬的内部页面上获取/与 element_locator 交互