Git删除已推送的提交

7
我正在使用git仓库来管理我的项目。我不小心推送了两个提交,但其实不应该这样做。而且在这之间,另外一个人已经提交了一些东西。所以,有没有办法可以删除我已经推送的提交呢?还是说我必须删除我的代码更改并作为新提交进行推送,因为另一个人已经在这之后提交了东西?
Git主分支:
提交A // 由我提交
提交B // 由我提交
提交C // 由某人提交
现在,我需要删除提交A和B,只留下提交C。非常感谢您提供任何帮助。

可能是如何在Github上删除提交?的重复问题。 - Andy Lester
3个回答

10
git reset --hard HEAD~1

HEAD~1 表示head之前的提交。

或者找到你想要的提交的提交ID(查看git log的输出),然后执行以下操作:

git reset --hard <sha1-commit-id>

我认为a)这将反过来做,跳过C并保留A和B,这与OP想要的相反,b)它只会影响本地状态,仍然需要单独的修复提交。 - eis

5

你需要撤销那些提交。

从技术上讲,它会删除这些更改并创建一个新的提交,以撤消它们。

现在,撤销它们会使它们仍然留在历史记录中,但通常这是可以接受的。只有当完全不能接受时才考虑像filter-branch和force pushes这样的解决方案。


2
git rebase --onto master~3 master~1 master

你可以通过命令git help rebase查看帮助,然后使用--onto选项,或者你可以在这里查看。 文档中有一个与你情况相同的示例。

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