首页 > 解决方案 > 将功能合并到主控,还原,然后将主控合并到功能会导致问题

问题描述

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

feature我从树枝上剪下一根master树枝。我在上面做了一些改动feature,而其他人一直在做master。然后,我合并 featuremaster. 紧接着,我不得不恢复这个合并提交,恢复master到它的合并前状态。

我继续发展feature。一段时间后,为了feature 与.master保持同步,我尝试合并masterfeature. 合并后,我的结果feature分支丢失了大多数仅存在于 中feature而不存在于master. 它还用它们的master版本覆盖了两个分支之间共有的文件,而没有报告任何合并冲突。原因是(如第一段所述)我之前曾尝试合并feature到 master 中,然后立即恢复了该合并。这使 Git 认为来自的文件在其历史的某个时刻feature存在master,然后从master由于某种原因,因此它会在合并到其中feature后尝试从结果分支中删除这些文件。master

所以,截至目前,我已经将我的feature分支master合并到其中,但它几乎不包含仅在feature分支中的文件。谢天谢地,我有我的 pre-mergefeature分支的本地副本,所以我可以查看合并后丢失的文件,然后手动添加它们。我还必须以这种方式手动查找冲突,而不是 Git 报告它们。

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

标签: gitgithubmerge

解决方案


您的master. 如果您有权强制推送master,请尝试硬重置而不是还原:

$ git reset --hard commit-id

这将丢弃您的还原提交和合并提交,然后您可以合并masterfeature

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

小心,如果你犯了一些错误,强制推送可能会破坏你的回购。


如果您没有权限master,请再次还原还原提交,如果您不能这样做。也许直接从其中签出最新文件而不是master 合并feature它们会更好。


推荐阅读