【问题标题】:How to delete commit that is pushed to the remote repository?如何删除推送到远程存储库的提交?
【发布时间】:2012-08-31 14:28:35
【问题描述】:

本地分支:-

'特征/100'

和远程分支:-

'主人'

'版本2'

不小心,

  1. 我已将我的功能分支“feature/100”合并到主分支
  2. 还将其推送到远程存储库。

但实际上'feature/100'应该已经合并到远程分支'Version2'

我如何修复它(部分):-

我已将功能分支“feature/100”合并到远程分支“Version2”并推送到服务器。

git checkout Version2
git merge --squash feature/100
git add .
git commit -m 'New message'

但我想删除我合并的最后一个推送并提交到主分支。怎么样?

旁注我只是一个在这个项目上工作的人。所以即使推送的提交被删除,它也不会伤害其他任何人

【问题讨论】:

标签: git


【解决方案1】:

您可以:

还原您的更改

git revert HEAD

这将创建一个新的提交,它会还原您刚刚推送到 master 的更改。这是最安全的选择,因为其他人可能已经取消了您提出的更改。

更改您的提交历史并强制推送更改

您可以删除刚刚推送的提交:

git reset --hard HEAD~1

git push origin master --force

除非您绝对确定没有人从 master 中撤下您的更改,否则您不想这样做。

欲了解更多信息,请参阅Delete commits from a branch in Git

【讨论】:

    【解决方案2】:

    您可以还原 master 上的合并提交。当您以后真的想合并分支时,您必须先还原还原。详细解释请看这里:

    http://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt

    【讨论】:

      【解决方案3】:

      可能为时已晚,但如果您想通过一次提交来回退推送的分支 (master?),请发出以下命令:

      git push origin +master^:master
      

      + 强制推送,master^ 描述了前一个最后一个提交。 :master 推送到远程 master 分支。

      【讨论】:

      • 没有为我做任何事情。收到一条消息“一切都是最新的”
      • 不要在 merge 提交时这样做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      相关资源
      最近更新 更多