从远程git存储库中删除最后一次提交

use*_*540 219 git

可能重复:
通过1次提交回滚本地和远程git存储库

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

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

A->B->C->D[HEAD, ORIGIN]
Run Code Online (Sandbox Code Playgroud)

我怎么去

A->B->C[HEAD,ORIGIN]
Run Code Online (Sandbox Code Playgroud)

谢谢.

kni*_*ttl 517

请注意,这将为已经从远程存储库中提取/拉取/克隆的人创建"替代现实".但事实上,它很简单:

git reset HEAD^ # remove commit locally
git push origin +HEAD # force-push the new HEAD commit
Run Code Online (Sandbox Code Playgroud)

如果您仍希望将其保存在本地存储库中并仅将其从远程存储库中删除,则可以使用:

git push origin +HEAD^:<name of your branch, most likely 'master'>
Run Code Online (Sandbox Code Playgroud)

  • +1用于更新远程`git push origin + HEAD ^:master`的HEAD (14认同)
  • 在Win机器上使用`git reset HEAD~1` (12认同)
  • 只需注意,在zsh中使用`git reset HEAD\^` (11认同)
  • +HEAD 是做什么的?当我执行 `git log` 时,它在最新提交中添加了 `(HEAD -&gt; 批准,来源/批准)`。这意味着什么? (3认同)
  • @ASN:强制推送当前已签出的分支(在您的情况下为“ /已批准”)。 (2认同)

Mic*_*ker 11

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

git push remote +branch^1:remotebranch
Run Code Online (Sandbox Code Playgroud)

这将强制更新远程分支到您的分支的最后一次提交.

  • 你_可以_也这样做_如果_有人已经拉了它。 (5认同)
  • 绝对.虽然你应该只在你知道自己在做什么以及后果是什么时才这样做.如果你可能没有读到这个答案. (4认同)