将特征合并到母版中,还原后再将母版合并到特征中会导致问题

时间:2019-01-25 00:48:11

标签: git github merge

我处于独特的Git合并情况。

我从feature分支中切断了master分支。我对feature进行了一些更改,而其他人则继续致力于master。然后,我将feature合并到master中。之后,我不得不立即还原此合并提交,将master恢复到其合并前的状态。

我继续在feature上进行开发。一段时间后,为了使featuremaster保持最新,我尝试将master合并到feature中。合并后,我得到的feature分支将丢失大多数仅存在于feature而不是master中的文件。它还使用master版本覆盖了两个分支之间常见的文件,而没有报告任何合并冲突。原因是这样的事实(如第一段中所述),我以前曾尝试将feature合并到master,然后立即还原该合并。这使得Git认为feature中的文件在历史上的某个时刻出现在master中,然后由于某种原因而从master中删除,因此它尝试从中删除这些文件。 feature合并后的结果master分支。

因此,到目前为止,我已经将feature的{​​{1}}分支合并到其中,但是它几乎不包含仅在master分支中的文件。幸运的是,我有一个合并前feature分支的本地副本,因此我可以查看合并后缺少的文件,然后手动添加它们。我还必须以这种方式手动查找冲突,而不是Git报告冲突。

这是很多手工工作。有没有一种简单的方法可以摆脱这种情况?我希望能够将feature进行“正确”合并到我的合并前master的备份副本中。

1 个答案:

答案 0 :(得分:0)

您的master中存在错误。如果您有强制执行master的权限,请尝试进行硬重置而不是还原:

$ git reset --hard commit-id

这将丢弃您的还原提交并合并提交,然后可以将master合并到feature

如果在这2次错误提交之后仍存在一些正确的提交,请使用rabase丢弃这2次提交。

请注意,如果您犯了一些错误,强行推送可能会破坏您的存储库。


如果您没有master的特权,则如果无法执行此操作,请再次还原还原提交。也许只是将最新文件从master检出到feature中而不是合并它们会更好。