如何删除已推送到远程仓库的提交?

13

本地分支:-

'feature/100'

远程分支:-

'master'

'Version2'

不小心的是,

  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'

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

附注:该项目只有我一个人在工作,所以即使删除了已推送的提交记录也不会对其他人造成任何影响。


1
@knittl:因为我想把我的特性分支合并成一个提交。 - user1327064
如何在 git push 后本地和远程撤销 git commit,即使这个提交已经合并了? - Stack Overflow - user202729
3个回答

25

你可以选择:

撤销你的更改

git revert HEAD

这将创建一个新的提交,撤销你刚刚推送到主分支的更改。这是最安全的选择,因为其他人可能已经拉取了你推送的更改。

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

你可以通过以下命令删除你刚刚推送的提交:

git reset --hard HEAD~1

git push origin master --force

除非你完全确定没有人从主分支拉取了你的更改,否则不要这样做。

更多信息请参见在Git中从分支中删除提交


2

也许已经有点晚了,但如果您想将推送的分支(master?)倒回一个提交,可以使用以下命令:

git push origin +master^:master

+ 使推送强制执行,master^ 描述了上一个提交。 :master 推送到远程主分支。


对我来说没有做任何事情。收到了一条消息“一切都是最新的”。 - Gerhard Powell
不要在 merge 提交上进行操作。 - Sandre

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接