[英]x commits behind master, how to do without merge master on branch
我正在使用 git 来维护我的代码,现在我基本上有 3 个分支:
master(受保护,无法直接编辑)
开发
发布版本(可以是 v1、v2 等)
很久以前,我在 master 上进行了一次合并,我通过接口恢复了(仅在 master 分支上),但现在我的开发分支总是在 master 后面 10 次提交,但我不能将 master 合并到开发中,因为它会导致代码回归。
如何在开发时重置这些提交? 有没有办法“取消”这些在 master 上的提交? 或者一种基于当前开发状态重置主人的方法?
谢谢
这里可能存在更大的问题(因为您有一个还原的合并,如果将来您想将这些提交的更改重新合并到master
中,这将成为障碍)。
也就是说,让ours
不说你落后于master
而不会影响develop
分支的内容的最简单方法是使用ours
合并策略进行合并(不要与可以给予默认合并策略)。
git checkout develop
git merge -s ours master
在纸面上,这告诉develop
developer 并没有真正落后于master
,那个master
只是包含与 development 永远不会相关的develop
。
这样做的缺点是它“隐藏”了合并中的更改。 一些命令(可能还有一些开发人员)假设如果合并提交的父级可以使用默认的合并策略在没有冲突的情况下被合并,那么这就是发生的事情 - 所以像这样的合并,打破了这个假设有时被称为“邪恶合并”。
另一种选择是提前develop
并将master
合并到 development 正常,但然后恢复该合并。
git checkout develop
git merge master
git revert -m1 HEAD
我知道这听起来让我提出的第一个问题更加严重,但这是一种罕见的情况,即两个错误可能成为正确。 这里的优点是(粗略地说)在将来的某些合并中再次将develop
历史与master
结合起来,git 将看到在master
上恢复之后develop
的恢复(更改的重新恢复) - 所以合并将表现得像你期望的那样。 而且您没有任何“邪恶”(或其他奇怪的)合并。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.