Git修复后恢复然后重新合并

Git Revert and then Remerge after Fix

我有以下git个分支

我将我的功能分支与生产分支合并,在此合并之后,生产出现了一些问题,因此我使用了 GitHub 还原功能并创建了 Revert-Feature-Branch,然后将其与生产合并。

现在,我已经修复了 Feature Branch 中的错误,我正在尝试将该分支与 Production 合并,但我没有得到我所做的所有更改,我正在仅针对修复所做的更改。 (这是可以接受的,因为提交已经与生产分支合并。)

有没有办法让我的原始代码从 Feature Branch 合并到 Production 分支作为新提交而不重置生产分支?

感谢您的帮助。

请注意,我已经做了一些研究并阅读了以下答案:How to revert a merge commit that's already pushed to remote branch?

这没有帮助。

如果功能分支是一条直线,那么您需要愚弄 git 相信原始修订一开始就没有合并过。这似乎很难做到,但事实并非如此。首先,找到两个分支之间的最后一个共同祖先。然后查看此修订版。然后重新应用(cherry-pick)功能分支的所有修订。 git,好像这些新修订从未应用到分支上。

git merge-base the-target-brsnch the-feature-branch
git checkout -b temp that-id #using a new branch temp
git cherry-pick HEAD..the-feature-branch

你尝试将结果分支合并到目标分支中,这次单元应该包含所有更改。

一个简单的还原可能不起作用,因为你在顶部有修复,所以你可能必须在还原还原后重新设置基准

feature: branch that you merge into production
feature-fixes: branch that contains the fixes
feature-reverted: contrains the reverted feature
feature-reverted-revert: contains the reverted revert

所以你可能需要做

git checkout feature-fixes
git rebase feature-reverted-revert
git checkout feature-reverted-revert
git merge feature-fixes
git checkout feature
git merge feature-reverted-revert

现在您可以在验证一切正确后将功能分支合并到生产中