微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

恢复推送合并以擦除错误推送的本地不想要的更改

如何解决恢复推送合并以擦除错误推送的本地不想要的更改

我在带有子模块的父存储库中推送了一个合并。 假设我将 main 分支合并到我的 feature/Foo 分支中。 我错误地推送了合并、本地更改和本地创建的不应该推送的新文件

例如我有

本地更改:(未提交的更改)

合并更改:(来自 main 分支)

现在我需要恢复推送的合并。 我知道 git revert 如何恢复提交,只创建一个具有相反更改的提交,因此在恢复合并时,它会恢复所有更改。 与合并一起进行的本地更改 + 更改被还原,因此创建相反的更改以撤消在合并提交中执行的所有更改/创建的文件

我采用的解决方案:

所以要保留我想要的版本,这是仅由合并更改而不是本地更改带来的更改,我必须按文件选择/丢弃我在还原提交中想要的更改,这是,手动检查日志并丢弃我不希望还原的更改。 这些是合并带来的,因为我只想还原在本地错误更改/添加文件

为什么?

因为如果我恢复所有更改,我也会恢复合并带来的更改,如果我重新合并评论与我需要的更改,则什么也不会发生,因为合并流程已经解决。 这些我的意思是 main 分支更改不会再次带到 feature/Foo 分支。似乎即使我在还原后比原始合并提前 2 次提交,合并流程也已在原始合并提交中解决(请在说明图中选中“最终提交以恢复原始合并”)。

我的愿望:

了解使用 git 执行此操作的方法,而不是手动检查每个文件的日志以进行选择性还原。 理想情况下,不要以最安全的方式删除远程分支/提交。如果还原出现在历史记录中,则无关紧要。

说明图:

enter image description here

解决方法

我认为用从旧版本检出的一些本地文件简单地创建一个新提交要容易得多。无需恢复合并,然后对这个合并提交应用奇特的魔法:)

应该很简单:

setPerson_Id

说明:从合并前的提交中复制指定文件的内容。使用这些更改创建提交。这有效地“还原”了这些更改。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。