5

我在我的项目中使用 git 存储库。我不小心推送了 2 个我不应该提交的提交。在这两者之间,有人做出了承诺。是否可以删除我推送的提交,或者我必须删除我的代码更改并将其作为新提交推送,因为有人已经提交了它。

Git主分支:

提交A //由我

提交 B // 由我

提交 C // 由某人

现在我必须删除提交 A 和 B 离开提交 C。任何帮助将不胜感激。

4

3 回答 3

8
git reset --hard HEAD~1

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

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

git reset --hard <sha1-commit-id>
于 2012-11-27T12:05:59.510 回答
3

您必须还原这些提交。

从技术上讲,它的作用是删除这些更改并进行新的提交,然后撤消它们。

现在,恢复它们将使它们保留在历史记录中,但通常没关系。如果这完全不可接受,那么请查看过滤器分支和强制推送之类的解决方案。

于 2012-11-27T06:59:41.043 回答
1
git rebase --onto master~3 master~1 master

You can see help by command git help rebase, and then --onto option, or you see it here. The doc has an example as some as your situation.

于 2014-12-05T06:00:05.720 回答