我希望标题不是很困惑。
历史(又名我做错了什么):
假设有两个分支,master 和 feature。 Feature 是一个分支,我在其中保留了一个较长的特性项目,并且我不时在该分支上使用 git pull origin master 来及时了解主代码的更改。
我不小心将功能 merge 并 push 了 master。
它还远未准备就绪,所以我试图还原它。我试过以下:http://sethrobertson.github.io/GitFixUm/fixup.html#pushed_new_merge 但我想我做错了。我用了: git 恢复 然后提交还原并推送它。问题似乎已解决 - 功能更改不再位于 master 上。
现在的问题是,当我尝试在功能分支上使用 git pull origin master 时,它会不断删除我的文件并还原所有更改,因为它正在与还原提交 merge 。 master 的负责人已经过去了,我需要从较新的提交中提取更改以继续使用功能分支。
我用谷歌搜索了这个主题,最有希望的答案是: https://metlos.wordpress.com/2012/01/13/git-merging-after-a-revert/ 但这里的 merge 方式与我想要的不同(要掌握的功能,我需要掌握功能)。
我正在考虑创建 master 的克隆分支,然后在该分支上应用链接中的说明,这样我可以获得我需要的结果,但我担心这是一个临时解决方案,我需要随时应用来自大师。
我尽量不让这个故事困惑,如果有什么不明白的地方我会澄清。
最佳答案
如果您还没有将 master 分支推送到团队/公共(public)存储库,并且在 pull on master 之后您没有提交,您可以这样做
git reset --hard **the-commit-before-pulling-feature-branch**
在 master 分支上。这将有效地抹去历史的错误,还一个干净的历史。
否则,(即如果您已经将 master 推送到 repo 或在 master 上完成了更多提交),您可以这样做
git revert **the-revert-commit**
在 pull master 后的 feature 分支上,有效地还原了还原提交。
关于GIT:如何在恢复 merge 后从分支中提取更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32138924/