git - 将功能合并到主控,还原,然后将主控合并到功能会导致问题
问题描述
我处于一个独特的 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
分支master
合并到其中,但它几乎不包含仅在feature
分支中的文件。谢天谢地,我有我的 pre-mergefeature
分支的本地副本,所以我可以查看合并后丢失的文件,然后手动添加它们。我还必须以这种方式手动查找冲突,而不是 Git 报告它们。
这是很多手工工作。有没有一种简单的方法可以摆脱这种情况?我希望能够在master
pre-merge 的备份副本中进行“正确”合并feature
。
解决方案
您的master
. 如果您有权强制推送master
,请尝试硬重置而不是还原:
$ git reset --hard commit-id
这将丢弃您的还原提交和合并提交,然后您可以合并master
到feature
如果在该 2 次错误提交之后有一些正确的提交,请使用rabase
丢弃该 2 次提交。
小心,如果你犯了一些错误,强制推送可能会破坏你的回购。
如果您没有权限master
,请再次还原还原提交,如果您不能这样做。也许直接从其中签出最新文件而不是master
合并feature
它们会更好。
推荐阅读
- python - 如何让 discord.py 命令检查用户的角色?
- html - 通过单击“查看更多”打破表格内容,以便仅显示一半
- php - PHPMailer 中的多个复选框值显示为空
- django - 两个模型,每个模型都有一个相互引用的 ManyToMany 字段
- angular - 对象 ID 未添加到 ngrx 存储实体
- java - 将增加/减少按钮与编辑文本(数字)混合
- excel - Excel:跨工作表比较和替换
- c# - 如何访问存储在 C# 类型中的所有属性变量?
- node.js - 带有 Sequelize many to many 的额外列
- reactjs - React 'props' 未定义