GIT - 撤消特定的过去合并,但需要在该合并后进行的提交保持完整
GIT - undo specific past merge but need the commits made after that merge to be intact
我同时在 Feature 分支和 Master 分支上工作。
几天前,我将 Feature 合并到 Master 中。在此之上也做出了一些承诺。
但后来我意识到这个功能不再需要了。所以我需要删除由于 Feature 分支而合并的提交。
检查后,我发现我有 3 个选项 Rebase、Revert 和 Cherry-pick.
我将来可能需要 Feature 分支的提交。因此,如果我将来需要它们,它的提交需要在提交历史/ git 日志等中可见。因此,我很困惑选择上述三个选项中的哪个选项。
注意:所有提交都被推送到 master。那么这对我选择的选项有什么影响吗?
因为您的分支已经发布,您可能希望避免使用交互式变基作为解决方案。交互式变基将允许您从字面上删除 Master
中不需要的 Feature
提交。但这将以重写 Master
的历史为代价,这可能会产生负面影响。
我认为对您来说最好的选择是 git revert
您不想要的 Feature
提交。
使用:
git revert <SHA-1>
其中 <SHA-1
> 是您要还原的提交。如果您有一系列顺序提交,那么您可以使用:
git revert --no-edit <SHA-1>..<SHA-1>
使用两次提交的范围。
无法将提交记录在您的历史记录中供以后使用。提交要么存在,要么不存在。
如果您想稍后恢复提交,您可以合并或挑选它们,或者您也可以还原还原提交 (@1615903)。
我同时在 Feature 分支和 Master 分支上工作。
几天前,我将 Feature 合并到 Master 中。在此之上也做出了一些承诺。
但后来我意识到这个功能不再需要了。所以我需要删除由于 Feature 分支而合并的提交。
检查后,我发现我有 3 个选项 Rebase、Revert 和 Cherry-pick.
我将来可能需要 Feature 分支的提交。因此,如果我将来需要它们,它的提交需要在提交历史/ git 日志等中可见。因此,我很困惑选择上述三个选项中的哪个选项。
注意:所有提交都被推送到 master。那么这对我选择的选项有什么影响吗?
因为您的分支已经发布,您可能希望避免使用交互式变基作为解决方案。交互式变基将允许您从字面上删除 Master
中不需要的 Feature
提交。但这将以重写 Master
的历史为代价,这可能会产生负面影响。
我认为对您来说最好的选择是 git revert
您不想要的 Feature
提交。
使用:
git revert <SHA-1>
其中 <SHA-1
> 是您要还原的提交。如果您有一系列顺序提交,那么您可以使用:
git revert --no-edit <SHA-1>..<SHA-1>
使用两次提交的范围。
无法将提交记录在您的历史记录中供以后使用。提交要么存在,要么不存在。
如果您想稍后恢复提交,您可以合并或挑选它们,或者您也可以还原还原提交 (@1615903)。