Git 撤销;“恢复拉取请求”;

Git 撤销;“恢复拉取请求”;,git,github,Git,Github,我在Github上合并了一个PR,并且必须将其还原,所以我使用Github界面上的revert按钮来执行此操作。 一个新的公关是从相同的分支恢复了一个作出,但有一些补充。当我合并新PR时,旧PR的某些更改部分丢失 请注意,在恢复之后添加了一些提交 我正在考虑使用Github UI再次恢复以前的恢复,但我不确定这将做什么,找不到任何与此相关的文档 我很想知道为什么代码会丢失,以及如何避免这种情况。另外,解决此问题的最佳方法是什么,再次使用“还原”选项 ed3240aa (HEAD -> ve

我在Github上合并了一个PR,并且必须将其还原,所以我使用Github界面上的revert按钮来执行此操作。 一个新的公关是从相同的分支恢复了一个作出,但有一些补充。当我合并新PR时,旧PR的某些更改部分丢失

请注意,在恢复之后添加了一些提交

我正在考虑使用Github UI再次恢复以前的恢复,但我不确定这将做什么,找不到任何与此相关的文档

我很想知道为什么代码会丢失,以及如何避免这种情况。另外,解决此问题的最佳方法是什么,再次使用“还原”选项

ed3240aa (HEAD -> version/2, origin/version/2) Merge branch 'version/2' of github.com:umbrella/app into version/2
8d7b6a8f Bump version of app
8b268172 Fix error in condition for disavowing excluded alerts
a12eca40 Point app to staging
5c83c0bb Merge pull request #1090 from umbrella/revert-1088-add-sentiment   // Merge PR with reversion
3ab766fc Revert "Add sentiment insight"                                     // Revert happened here
132a9e64 Merge pull request #1089 from umbrella/nana_sources
acaec5e0 Merge branch 'version/2' into nana_sources
881925d7 - finished showing the dimension sources
df0b0ead Merge pull request #1088 from umbrella/add-sentiment
5bc3165d Merge pull request #1087 from umbrella/sync-exclude
c6936a2e (origin/sync-exclude, sync-exclude) Remove spurious logs

当您恢复时,git会创建一个新的提交,其中包含恢复的提交的“反面”。例如,假设您执行了一个
git revert 39f5
,那么您有:

* 8998 (HEAD -> master) Revert "Do stuff that is needed"
* 39f5 Do stuff that is needed
* 8573 First commit
8998
commit是恢复,但它仍然是正常的提交。它只包含与
39f5
相反的“反面”。这与手动取消所有更改是一样的

因此,如果您继续工作,则
39f7
中的所有工作将不再存在!如果您提出拉动请求,则不包括在内。如果您希望将其包括在内,您有两个选择:

  • 您可以还原还原
    GitRevert 8998
    将消除恢复,您将恢复原来的更改(其中包含bug)。然后,修复另一个提交中的bug并执行拉请求

  • 您可以重置还原
    git reset 39f5
    将返回提交
    39f5
    ,并“擦除”还原。它将不再出现在您的历史记录中,因此
    39f5
    中的所有更改都将出现。同样,修复另一个提交中的bug并执行pull请求


  • 如果您是git新手,我建议您选择选项1,因为它更宽容——更改仍保留在您的历史记录中,如果您搞砸了,您可以返回到它们。当您对git有更多的经验时,您将知道选项1和选项2之间什么更合适,并且可以更多地使用它。

    我的猜测是git将新的pull请求识别为与前一个请求相同(或类似),这就是某些更改无法通过的原因。我没有解决这个问题的办法。如果这只是在本地发生,我建议取消错误的合并提交,然后重新进行。