我同时在功能分支和主分支上工作。
几天前,我将功能合并到 Master 中。在此之上也做了一些提交。
但后来我意识到这个功能不再需要了。所以我需要删除由于 Feature 分支而引入的提交。
在检查时,我意识到我有3个选项 Rebase , Revert 和 Cherry-pick 。
我将来可能需要功能分支的提交。因此,如果我将来需要它们,它的提交需要在提交历史记录/ git日志等中可见。因此,我很困惑上面三个选择哪个选项。
注意:所有提交都被推送到master。那么这对我选择的选项有什么影响吗?
答案 0 :(得分:2)
由于您的分支已经发布,您可能希望避免使用交互式rebase作为解决方案。交互式rebase允许您逐字地从Feature
中删除您不想要的Master
提交。但这会以重写Master
的历史为代价,这会产生负面影响。
我认为最适合您的方法是git revert
您不想要的Feature
次提交。
使用:
git revert <SHA-1>
其中<SHA-1
&gt;是您想要还原的提交。如果您按顺序进行了一系列提交,则可以使用:
git revert --no-edit <SHA-1>..<SHA-1>
使用两个提交范围。
您无法在历史记录中提交以供日后使用。提交都在那里,或者它们不存在。
如果你想稍后恢复提交,你可以合并或者挑选它们,或者你也可以还原恢复提交(@ 1615903)。