我已在分支上合并了 PR develop,但暂存时出现问题,因此我已使用以下命令恢复:
git revert -m1 <commit>
然后在分支git push上develop
当我在 Github 上创建 PR 以将功能分支合并到 时develop,即使我已经恢复了开发分支上的合并提交,它也没有在 PR 上显示任何提交/代码。
这是什么问题以及如何解决?
这里需要理解两个概念。
git revert通过创建新的提交来反转先前的提交。请参阅Git 恢复文档。先前的提交不会从历史记录中删除。以下是您的开发分支的当前状态。
c1 -- c2 -- merge commit -- revert commit
\ /
c3 -- c4
c3, c4 - commits that contain the feature branch changes
Run Code Online (Sandbox Code Playgroud)
如果你现在尝试合并功能分支,由于 c4 提交已经在开发历史中,git 将不会采取任何操作。
可以通过以下方式解决。此链接中有关于此场景的详细讨论。
git log以确定自哪个提交以来需要将更改合并到开发分支。(在我们的示例中,它是 c3)。git format-patch <commit> <folder where patch file will be saved>git merge origin/develop。这也将恢复您在功能分支中的更改。git apply --index <patch file>。正如@Lasse 提到的,您可以恢复恢复提交。最好在功能分支中进行这些更改,然后提出 PR 来开发分支。
git revert <revert commit>这是最不可取的选项,因为它重写了功能分支历史记录。您可以运行git rebase -i <since commit>并更改要合并的第一个提交的消息。这将创建新的当前和连续提交哈希,并允许您将其合并以进行开发。但有两个问题。