GIT:如何在恢复 merge 后从分支中提取更改

标签 git github merge git-pull git-revert

我希望标题不是很困惑。

历史(又名我做错了什么):

假设有两个分支,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/

相关文章:

git - 如何与原GitHub项目同步fork?

svn merge --dry-run 显示 svn 差异

git - AWS Codebuild - 执行 buildspec.yml 时如何读取提交上的标签?

Git clean 过滤器 - 检索原始行,git smudge 但不是原始行

git - 无法将分支推送到 git,得到 "RPC failed ... errno 10054"

linux - 只有一个用户可以推/pull 到 github

json - GitHub 无法正确解析 key GoLang API 请求

git - 如何更改 VSCode 中的远程源?

python - Pandas :更新和合并数据框的更好方法

git - 真正压平一个 git merge