恢复推送合并后无法合并master到feature分支

时间:2014-08-08 15:33:53

标签: git github version-control merge revert

我们一直在使用git开发一个功能分支。我时不时地将主服务器合并到此功能分支中,以使功能分支与主服务器保持同步,并便于在最后将功能分支合并到主服务器中。

然后,我意外地将功能分支合并到主服务器中(太早了,我打算像以前一样合并其他方式)。由于合并已被推送,我使用git revert -m 1 <merge-commit>根据these instructions恢复推送的合并。

恢复似乎工作正常,但现在我遇到的问题是,当我尝试将主服务器合并到功能分支时,功能分支中的大多数更改都会被主服务器中的“旧”文件覆盖。看起来在恢复之后,主设备被认为具有较新版本的文件。我还怀疑,当我们完成时,我将无法将功能分支合并到主服务器中。

如何回到初始状态,我可以将主数据库中的更改合并到功能分支中,而不会覆盖功能分支中所做的所有其他更改?

2 个答案:

答案 0 :(得分:1)

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

  1. 备份功能分支
  2. 将master合并到功能分支中(此时,来自主服务器的&#34;过时&#34;文件正在合并到功能分支中)
  3. 从git和commit
  4. 中删除功能分支的所有文件
  5. 将功能分支的备份复制到本地功能分支
  6. 将所有文件添加到git,commit和push
  7. 我只是尝试在主服务器中进行小更新并将其合并到功能分支中。只有次要更新被合并到功能分支中,而不是&#34;过时的&#34;来自主人的文件。

答案 1 :(得分:0)

您可以尝试在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恢复到以前的位置,并允许您继续合并到功能。