如何在使用Github Revert Button恢复PR后再次进行PR和合并

时间:2015-01-09 00:41:35

标签: git github merge

基本上我使用Github revert button功能分支的先前公关恢复为master,然后我决定合并相同的功能分支我早些回复了,但我无法这样做。步骤如下:

  1. PR将功能分支合并到master
  2. 从(master
  3. 还原PR合并
  4. 尝试创建新的PR以将功能分支再次合并到master
  5. 收到此消息:
  6.   

    没有什么可比较的。

         

    master是来自feature-branch的所有提交的最新版本。尝试切换基础以进行比较。

    有关如何将功能分支再次合并到master

    的任何建议

6 个答案:

答案 0 :(得分:28)

只需恢复还原。因此,通过单击还原按钮,您将创建一个新PR(您的步骤2)。合并后,您可以选择还原它,这将创建一个包含所有更改的新分支。然后您可以将其拉出,对其进行更改(如果需要)并创建新的PR。您将丢失Github上的所有提交消息,但所有文件更改仍将存在。很高兴参考你的原始分支并在新PR中恢复。

任何可以避免复杂的变形或强迫推动掌握的东西。

答案 1 :(得分:3)

我知道这已经过时了,但是如果有人需要一个好的答案就在这里:

合并PR并删除brach并稍后还原此合并后,您可以创建新分支,然后还原还原。将其推送到远程仓库并创建新的PR。

这将创建一个新的PR,其中一个提交命名为' revert" revert#123 blabla"`以及对diff的所有更改。

https://www.tildedave.com/2012/11/24/reverting-a-github-pull-request.html

答案 2 :(得分:2)

自从我遇到这个问题以来,我就在写这个答案,我发现这里的答案更多是理论性的,而不是实际的。我上网多了一点,找到了解决此问题的方法。您可以在文章here中找到更详细的答案。

要解决此问题,您必须创建一个跟踪主服务器的新分支,并还原还原提交。然后签出功能分支并合并新分支。现在,您可以解决冲突(如果有),提交并创建新的PR。

以下是命令:

# do the needed changes in the feature branch
$ git commit -m "fixed issues in feature-branch'

# create new branch tracking master branch
$ git checkout -b revert-the-revert-branch -t master

# revert the reversion commit
# find it from your git log
# in linux try: 'git log | grep revert -A 5 -B 5'
$ git revert <revert-commit-hash>

# checkout the original feature branch
$ git checkout feature-branch

# merge the revert branch
$ git merge revert-the-revert-branch

# handle merge conflicts and commit and PR

答案 3 :(得分:0)

您无法自动合并的原因是因为分支的基础与主分支的HEAD不同步。

恢复还原可能会变得混乱,有时缺乏透明度。

此外,还原恢复将阻止具有此代码的其他分支正确合并。

假设您在master上有特征x并合并到分支y中。然后你决定主人不应该有合并的功能x,因为它取决于分支y。所以,你回归主人。当您尝试合并分支x时,git-merge命令会看到原始合并,并愉快地宣布一切都很好并且分支已经合并,省略了对特征x的这些提交,即使您希望它们与分支y合并。

你应该拔出最新的主人,在master上重新分支你的分支然后你应该能够做另一个拉取请求。

答案 4 :(得分:0)

  1. 转到 Revert PR 并单击“Revert”(但不要合并它)
  2. git fetch
  3. git checkout <name of revert's revert>

您的所有更改都会在那里,当您创建 PR 时,这些更改就会显示出来。

需要说明的是 - 在恢复 PR 上单击“恢复”会给您一个类似 revert-202-revert-201-originalbranchname 的名称。这是您要编辑的分支!

答案 5 :(得分:0)

这就是我所做的。

  1. 检查您的功能分支

  2. 使用您的基本分支重新设置基础: 这将使您的功能分支进入 Base 分支的状态,因为您的功能分支提交已经是基础分支的一部分。您的功能分支提交将在您的恢复 PR 提交下方对齐。

  3. 然后恢复恢复 PR 的提交。这将使您的功能分支恢复到其原始状态,但现在有了新的提交。

  4. 推送到功能分支,然后提出 PR。

为什么会这样? 通过变基,您可以使您的功能分支与基础分支同步,即使其与基础提交相同的提交 - 需要在基础之前移动并获得将您的更改恢复到您的功能分支的提交

通过恢复,您可以撤消删除您的更改的更改,现在您的更改可以成为基础分支的新提交 AHEAD 的一部分。