我在我的项目中使用 git 存储库。我不小心推送了 2 个我不应该提交的提交。在这两者之间,有人做出了承诺。是否可以删除我推送的提交,或者我必须删除我的代码更改并将其作为新提交推送,因为有人已经提交了它。
Git主分支:
提交A //由我
提交 B // 由我
提交 C // 由某人
现在我必须删除提交 A 和 B 离开提交 C。任何帮助将不胜感激。
git reset --hard HEAD~1
其中 HEAD~1 表示 head 之前的提交。
或者找到您想要的提交的提交 ID(查看 git log 的输出),然后执行以下操作:
git reset --hard <sha1-commit-id>
您必须还原这些提交。
从技术上讲,它的作用是删除这些更改并进行新的提交,然后撤消它们。
现在,恢复它们将使它们保留在历史记录中,但通常没关系。如果这完全不可接受,那么请查看过滤器分支和强制推送之类的解决方案。
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.