【问题标题】:Remove last commit from remote git repository [duplicate]从远程 git 存储库中删除最后一次提交 [重复]
【发布时间】:2012-01-03 17:42:25
【问题描述】:

可能重复:
Rolling back local and remote git repository by 1 commit

如何从远程 GIT 存储库中删除最后一次提交,例如我在日志中看不到它?

如果例如 git log 给我以下提交历史记录

A->B->C->D[HEAD, ORIGIN]

我怎么去

A->B->C[HEAD,ORIGIN]

谢谢。

【问题讨论】:

  • 如果您已将其提交给 repo,那么我认为没有办法将其删除。
  • @Guarav:我认为没有礼貌的方法可以删除它。我的意思是,如果一切都失败了,回购上的rm -rf 可以丢弃任何东西。但我认为我链接到的问题包含一个更好的解决方案——如果其他人拉了转速,这仍然是不礼貌的。
  • 最后一次提交总是可以从你的历史记录中删除。根据许多因素,您可能会也可能不会将其从人们的记忆中完全抹去。
  • @sarnold,如果它被推到其他地方,你只会破坏你对存储库的想法,而不是世界:)
  • @Michael:哈!优秀的区别。

标签: git


【解决方案1】:

请注意,这将为已经从远程存储库获取/提取/克隆的人创建“替代现实”。但其实很简单:

git reset HEAD^ # remove commit locally
git push origin +HEAD # force-push the new HEAD commit

如果你想在你的本地存储库中仍然拥有它并且只从远程中删除它,那么你可以使用:

git push origin +HEAD^:<name of your branch, most likely 'master'>

【讨论】:

  • +1 用于更新遥控器的 HEAD git push origin +HEAD^:master
  • 请注意,在zsh中使用git reset HEAD\^
  • 在 Win 机器上使用 git reset HEAD~1
  • +HEAD 是做什么的?当我执行git log 时,它在最新提交中添加了(HEAD -&gt; approval, origin/approval)。这是什么意思?
  • @ASN:它强制推送当前签出的分支(在您的情况下是/是 approval)。
【解决方案2】:

如果没有人拉它,你可能会做类似的事情

git push remote +branch^1:remotebranch

这将强制将远程分支更新为您分支的最后一个提交。

【讨论】:

  • 你可以也这样做如果有人已经拉了它。
  • 当然。尽管只有在您知道自己在做什么以及后果是什么的情况下才应该这样做。如果您可能没有阅读此答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 2020-07-16
  • 1970-01-01
  • 2018-07-27
相关资源
最近更新 更多