撤消“恢复拉取请求”

T. *_*Rex 5 git github

我在 Github 上合并了一个 PR,并且必须将其恢复,所以我使用了 Github 界面上的恢复按钮来完成此操作。新的 PR 是从与恢复的 PR 相同的分支创建的,但添加了一些内容。当我合并新 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
Run Code Online (Sandbox Code Playgroud)

eed*_*rah 4

当您恢复时,git 创建一个新的提交,其中包含恢复的提交的“相反”内容。例如,假设您执行 a git revert 39f5,那么您将得到以下结果:

* 8998 (HEAD -> master) Revert "Do stuff that is needed"
* 39f5 Do stuff that is needed
* 8573 First commit
Run Code Online (Sandbox Code Playgroud)

提交8998是恢复,但它仍然是正常的提交。它只包含“相反”的内容39f5。这与您手动取消所有更改相同。

所以如果你继续工作,所有的工作都39f7不再存在了!如果您提出拉取请求,则不包括在内。如果您希望将其包含在内,您有两种选择:

  1. 您可以恢复恢复。git revert 8998将摆脱恢复,并且您将恢复原始更改(其中有错误)。然后,修复另一个提​​交中的错误并执行拉取请求。

  2. 您可以重置恢复。git reset 39f5将返回到提交39f5,并“删除”恢复。它将不再存在于你的历史中,因此所有的变化39f5都会在那里。再次修复另一个提​​交中的错误并执行拉取请求。

如果您是 git 新手,我推荐选项 1,因为它更宽容 - 更改保留在您的历史记录中,如果您搞砸了,您可以返回到它们。当您对 git 有更多经验时,您就会知道选项 1 和选项 2 之间哪个更合适,并且可以更多地使用它。