【问题标题】:Is there a way to rollback my last push to Git? [duplicate]有没有办法回滚我对 Git 的最后一次推送? [复制]
【发布时间】:2011-10-03 01:26:13
【问题描述】:

可能的重复:
Undoing a 'git push'

我推送了一些错误的代码,并且我是存储库的唯一用户。如何回滚我的最后一次提交?

【问题讨论】:

  • 不是重复的,推送不同于提交。

标签: git


【解决方案1】:

首先,您需要确定最后一次已知提交的修订 ID。如果你知道你需要反转一个提交,你可以使用HEAD^HEAD~{1}

git reset --hard <revision_id_of_last_known_good_commit>
git push --force

【讨论】:

  • 请注意,如果您有任何隐藏的内容,使用 --hard 将删除您的本地工作。
  • 通过哈希 id 将本地和远程 repos 还原为 sertain 提交的简单方法。泰。
  • 你把我从灾难中救了出来。非常感谢
  • 这应该在上面。
【解决方案2】:

因为你是唯一的用户:

git reset --hard HEAD@{1}
git push -f
git reset --hard HEAD@{1}

(基本上,返回一次提交,强制推送到 repo,然后再返回 - 如果您不关心提交,请删除最后一步)

无需对本地存储库进行任何更改,您还可以执行以下操作:

git push -f origin <sha_of_previous_commit>:master

通常,在已发布的存储库中,先使用git revert 然后再使用git push 会更安全

【讨论】:

  • +1 表示“通常,在已发布的存储库中,执行 git revert 然后执行 git push 更安全”。我建议在遥控器中倒带历史的唯一原因是因为 OP 是唯一的用户。如果您要与他人分享,请不要后退,永远向前。
  • 我认为第二个确实删除了远程存储库中的不良推送,但历史记录仍保留在本地存储库中。当您进行新的更改,再次提交并推送时,您将再次在远程仓库中收到错误的推送。
  • 嗨,我只将git push -f origin 99157a1b1b27820dfba48c5e9d3c4f075670670c:master 列为“被引用最多的食谱”,但什么都没有...如何使用您的食谱?这是最简单的情况:删除master的最后一次提交。删除=从提交历史中删除。 (在您的文字中没有明显看出git revert 将从历史中脱颖而出)
  • 为什么在git push -f之后还有第二个git reset --hard HEAD@{1}
猜你喜欢
  • 2020-07-29
  • 2020-12-07
  • 2018-03-24
  • 1970-01-01
  • 2015-01-16
  • 2022-12-17
  • 2021-06-24
  • 2018-03-21
  • 2023-04-01
相关资源
最近更新 更多