如何删除推送到远程存储库的提交?

时间:2012-09-06 17:50:08

标签: git

当地分公司: -

  

'功能/ 100'

远程分支机构: -

  

'主'

     

'版本2'

意外,

  1. 我已将我的功能分支'feature / 100'合并到主
  2. 还将其推送到远程存储库。
  3. 但是真正的' feature / 100 '应该合并到远程分支' Version2 '

    我如何修复(部分): -

    我已将功能分支“功能/ 100 ”合并到远程分支“版本2 ”并将其推送到服务器。

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

    但是我想删除我已经合并并提交给master分支的最后一次推送。怎么样?

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

3 个答案:

答案 0 :(得分:15)

你可以:

还原您的更改

git revert HEAD

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

更改您的提交记录并强行推送更改

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

git reset --hard HEAD~1

git push origin master --force

除非您完全确定没有人从主人那里取下您的更改,否则您不想这样做。

有关详细信息,请参阅Delete commits from a branch in Git

答案 1 :(得分:1)

您可以在master上恢复合并提交。当您以后真的想要合并分支时,您必须先恢复恢复。有关详细说明,请参见此处:

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

答案 2 :(得分:0)

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

git push origin +master^:master

+强制推送,master^描述前一次提交。 :master推送到远程主分支。