GIT:如何在恢复合并后从分支中提取更改
Posted
技术标签:
【中文标题】GIT:如何在恢复合并后从分支中提取更改【英文标题】:GIT: How to pull changes from branch after a reverted merge 【发布时间】:2015-11-15 07:35:20 【问题描述】:我希望标题不是很混乱。
历史(也就是我做错了什么):
假设有两个分支,master 和 feature。 Feature 是一个分支,我在其中保留了一个较长的特性项目,并且不时在该分支上使用 git pull origin master 来保持对主代码更改的更新。
我不小心将功能合并并推送到 master 中。
它还远远没有准备好,所以我试图恢复它。我试过以下:http://sethrobertson.github.io/GitFixUm/fixup.html#pushed_new_merge 但我想我做错了。我用了: git 还原 然后提交还原并推送它。问题似乎已解决 - 不再在 master 上的功能发生变化。
现在的问题是,当我尝试在功能分支上使用 git pull origin master 时,它会不断删除我的文件并恢复所有更改,因为它正在与 revert-commit 合并。主人的负责人已经过去了,我需要从较新的提交中提取更改以继续功能分支。
我用谷歌搜索了这个主题,最有希望的答案是: https://metlos.wordpress.com/2012/01/13/git-merging-after-a-revert/ 但这里的合并不是我想要的(功能要掌握,我需要主人来做特色)。
我正在考虑创建 master 的克隆分支,然后应用该分支上链接中的指令,以便获得所需的结果,但我担心这是一个临时解决方案,我需要随时申请来自主人。
我尽量不让这个故事变得混乱,如果有什么不明白的地方我会澄清。
【问题讨论】:
【参考方案1】:如果您还没有将 master 分支推送到团队/公共存储库,并且您在 pull on master 后没有提交,您可以这样做
git reset --hard **the-commit-before-pulling-feature-branch**
在 master 分支上。这将有效地从历史中消除错误并提供干净的历史。
否则,(即,如果您已经将 master 推送到 repo 或在 master 上进行了更多提交),您可以这样做
git revert **the-revert-commit**
在 feature 分支上拉出 master 后,有效地还原了 revert 提交。
【讨论】:
我已经推送了它并且已经进行了新的提交。您的解决方案就像一个魅力,起初我得到一个“无法恢复”的错误,但它只是一个需要手动合并的文件。非常非常感谢。 如何在将主分支拉到我的功能分支时恢复“合并提交的恢复”?它需要一些父节点/分支。您能否在答案中也添加这部分?以上是关于GIT:如何在恢复合并后从分支中提取更改的主要内容,如果未能解决你的问题,请参考以下文章