撤消“还原拉取请求”

时间:2018-09-17 11:39:45

标签: git github

我在Github上合并了PR,不得不还原它,所以我使用Github界面上的还原按钮来完成它。 从与还原分支相同的分支中创建了一个新的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

1 个答案:

答案 0 :(得分:0)

还原时,git创建一个新的提交,其中包含已还原提交的“相反”内容。例如,假设您做了一个git revert 39f5,那么您就有了:

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

8998提交是还原,但仍是常规提交。它仅包含与“ {{1}”相对的“对立”。就像您手动取消所有更改一样。

因此,如果您继续工作,39f5中的所有工作将不再存在!如果您提出拉取请求,则不包括在内。如果要包含它,则有两个选择:

  1. 您可以还原还原。 39f7将摆脱还原,您将获得原始更改(其中包含错误)。然后,修复另一个提​​交中的错误并执行请求。

  2. 您可以重置还原。 git revert 8998将返回到提交git reset 39f5,并“擦除”还原。它将不再存在于您的历史记录中,因此39f5中的所有更改都将存在。再次,修复另一个提​​交中的错误并执行拉取请求。

如果您是git的新手,我建议您使用选项1,因为它更宽容-更改仍保留在您的历史记录中,如果您搞砸了,可以直接返回。当您对git有更多的经验时,您会知道选项1和选项2之间更合适的内容,并且可以多使用一点。