【问题标题】:Can't merge master to feature branch after reverting a pushed merge恢复推送的合并后无法将 master 合并到功能分支
【发布时间】:2014-10-02 03:28:31
【问题描述】:

一段时间以来,我们一直在使用 git 开发功能分支。时不时地,我将 master 合并到这个 feature 分支中,以保持 feature 分支与 master 同步,并便于最后将 feature 分支合并到 master。

然后,我不小心将 feature 分支合并到 master 中(太早了,我打算像以前一样反过来合并)。由于已经推送了合并,我使用git revert -m 1 <merge-commit>根据these instructions恢复推送的合并。

还原似乎工作正常,但现在我遇到的问题是,当我尝试将主分支合并到功能分支时,功能分支中的大部分更改都会被主分支中的“旧”文件覆盖。看起来在还原之后,master 被认为拥有更新版本的文件。我还怀疑完成后我将无法将功能分支合并到主分支中。

我怎样才能回到初始状态,即我能够将主分支中的更改合并到特性分支中而不覆盖特性分支中所做的所有其他更改?

【问题讨论】:

  • 也许有一种方法可以告诉 git,功能分支中的所有更改都比 master 更新?我认为这会解决我的问题,因为我只有一个小更新,我想从 master 合并到 feature 分支..

标签: git github version-control merge revert


【解决方案1】:

您可以尝试在 feature-into-master 提交之前直接检查提交。从那个分支(命名为master2 或任何你想要的)。删除当前主控。然后从master2 分支到一个名为master 的新分支。

git checkout <hash of commit before feature merge in master>
git checkout -b master2
git branch -D master
git checkout -b master
git branch -D master2

删除 github 上的 master 分支并推送你的新主人。这可能是一种迂回的方式,但它本质上应该将 master 恢复到以前的位置,并允许您继续合并到 feature。

【讨论】:

  • 天哪,这听起来很危险,尤其是对于像我这样的非 git 专家。我想我会先等待更多建议。
【解决方案2】:

我执行了以下步骤,似乎已经解决了问题:

  1. 备份功能分支
  2. merge master 到 feature 分支(此时,来自 master 的“过时”文件正在合并到 feature 分支)
  3. 从git中删除功能分支的所有文件并提交
  4. 将功能分支的备份复制到本地功能分支中
  5. 将所有文件添加到 git、提交和推送

我只是尝试在 master 中进行小更新并将其合并到功能分支中。只有次要更新被合并到特性分支中,而不是来自主分支的“过时”文件。

【讨论】:

  • 你拯救了我的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 2012-09-14
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
相关资源
最近更新 更多