git - 撤消“还原拉取请求”
问题描述
我在 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
解决方案
当您还原时,git 会创建一个新的提交,其中包含还原的提交的“相反”。例如,假设你做了一个git revert 39f5
,那么你有这个:
* 8998 (HEAD -> master) Revert "Do stuff that is needed"
* 39f5 Do stuff that is needed
* 8573 First commit
8998
提交是还原,但它仍然是正常的提交。它只包含“相反”作为39f5
. 就像您手动取消所有更改一样。
所以如果你继续工作,所有的工作39f7
都不再存在了!如果您提出拉取请求,则不包括在内。如果您希望将其包含在内,您有两种选择:
您可以还原还原。
git revert 8998
将摆脱还原,您将恢复原始更改(其中有错误)。然后,在另一个提交中修复错误并执行您的拉取请求。您可以重置还原。
git reset 39f5
将返回到 commit39f5
,并“擦除”还原。它不会再出现在你的历史中,所以所有的变化39f5
都会在那里。再次,修复另一个提交中的错误并执行拉取请求。
如果您是 git 新手,我推荐选项 1,因为它更宽容 - 更改保留在您的历史记录中,如果您搞砸了,您可以返回它们。当你有更多的 git 经验时,你会知道选项 1 和选项 2 之间哪个更合适,并且可以多玩一点。
推荐阅读
- unity3d - Hololens Spectator View Android 空间故障
- c# - 尝试序列化 JSON 数组时获取异常 Newtonsoft.Json.JsonSerializationException
- ruby-on-rails - 来自嵌套模块的 Rspec“NoMethodError”
- python - 计算数据框中与另一个实例匹配的实例
- blockchain - 尝试使用 SunPKCS11 提供程序将 Corda R3 区块链与 Utimaco HSM 集成
- navigation - 导航搜索栏
- typescript - 将类型的字段列表映射到数组类型
- ios - 如何在 Swift 中使用 place_id 从 Google Places API 请求地点详细信息?
- java - 为什么要使用 awt.Dimension 类?
- python - 使用轨道 URI 从 Spotify 中提取音频特征