Git rebase - 删除一些已推送到远程存储库的提交

时间:2012-12-19 01:10:06

标签: git git-rebase git-remote

我编写了一个时间限制功能,该功能已合并到主控并运送到生产中。现在时间到了,我想从代码库中删除包含该功能的提交。

通常我会做git rebase -i并删除提交。

但是,这些提交已经被推送到远程存储库,所以当我在本地进行rebase并尝试推送分支时,我会抱怨我的分支的提示是如何落后的,并且可以快速转发。

有没有办法从rebase生成“新提交”,撤消我不想要的提交?我并不关心拥有“干净”的提交历史,任何退出这些提交的方法都会很棒。

2 个答案:

答案 0 :(得分:1)

您必须git push --force您的分支到任何遥控器,因为默认情况下,push拒绝重写历史记录。

答案 1 :(得分:0)

如果您只想摆脱功能(但不是功能的历史记录)并且它包含在一些特定的提交中(不影响其他功能),那么git revert可能是您的答案。

这并不总是一个很好用的选项(例如,提交可能包含您不想删除的其他功能),或者您可能有一些令人信服的理由希望删除任何功能跟踪,但它是一个方便的命令要注意。