我处于独特的Git合并情况。
我从feature
分支中切断了master
分支。我对feature
进行了一些更改,而其他人则继续致力于master
。然后,我将feature
合并到master
中。之后,我不得不立即还原此合并提交,将master
恢复到其合并前的状态。
我继续在feature
上进行开发。一段时间后,为了使feature
与master
保持最新,我尝试将master
合并到feature
中。合并后,我得到的feature
分支将丢失大多数仅存在于feature
而不是master
中的文件。它还使用master
版本覆盖了两个分支之间常见的文件,而没有报告任何合并冲突。原因是这样的事实(如第一段中所述),我以前曾尝试将feature
合并到master,然后立即还原该合并。这使得Git认为feature
中的文件在历史上的某个时刻出现在master
中,然后由于某种原因而从master
中删除,因此它尝试从中删除这些文件。 feature
合并后的结果master
分支。
因此,到目前为止,我已经将feature
的{{1}}分支合并到其中,但是它几乎不包含仅在master
分支中的文件。幸运的是,我有一个合并前feature
分支的本地副本,因此我可以查看合并后缺少的文件,然后手动添加它们。我还必须以这种方式手动查找冲突,而不是Git报告冲突。
这是很多手工工作。有没有一种简单的方法可以摆脱这种情况?我希望能够将feature
进行“正确”合并到我的合并前master
的备份副本中。
答案 0 :(得分:0)
您的master
中存在错误。如果您有强制执行master
的权限,请尝试进行硬重置而不是还原:
$ git reset --hard commit-id
这将丢弃您的还原提交并合并提交,然后可以将master
合并到feature
如果在这2次错误提交之后仍存在一些正确的提交,请使用rabase
丢弃这2次提交。
请注意,如果您犯了一些错误,强行推送可能会破坏您的存储库。
如果您没有master
的特权,则如果无法执行此操作,请再次还原还原提交。也许只是将最新文件从master
检出到feature
中而不是合并它们会更好。