如何解决x 在 master 后面提交,如何在分支上不合并 master
我正在使用 git 维护我的代码,现在我基本上有 3 个分支:
-
master(受保护,无法直接编辑)
-
开发
-
发布版本(可以是 v1、v2 等。)
很久以前,我在 master 上进行了一次偶然的合并,我通过接口恢复了它(仅在 master 分支上),但现在我的开发分支总是落后于 master 10 个提交,但我无法将 master 合并到开发,因为它会导致代码回归。
如何在开发时重置这些提交?有没有办法在 master 上“取消”这些提交?或者根据开发的当前状态重置master的方法?
谢谢
解决方法
这里可能存在更大的问题(因为您有一个恢复的合并,如果将来您想将这些提交的更改重新合并到 master
中,这将会妨碍您)。
也就是说,在不影响 master
分支内容的情况下,让 git 不说您落后于 develop
的最简单方法是使用 {{ 1}} 合并策略(不要与可以提供给默认合并策略的 ours
选项混淆)。
ours
在纸面上,这告诉 git git checkout develop
git merge -s ours master
并不真的落后于 develop
,master
只是包含永远不会与 {{ 相关的提交1}}。
这样做的缺点是它“隐藏”了合并中的更改。一些命令(可能还有一些开发人员)假设,如果使用默认合并策略可以在没有冲突的情况下合并合并提交的父项,那么这就是发生的事情 - 因此合并,例如这个,打破该假设有时被称为“邪恶”合并”。
另一种选择是继续将 master
正常合并到 develop
中,然后恢复那个合并。
master
我知道这听起来好像让我提出的第一个担忧变得更糟,但这是两个错误可能成为一个正确的罕见情况。这里的优点是(粗略地说)在将来再次将 develop
历史与 git checkout develop
git merge master
git revert -m1 HEAD
合并的合并中,git 将看到 develop
上的还原(更改的重新设置)发生在master
上的恢复之后 - 所以合并的行为会像您期望的那样。而且您没有任何“邪恶”(或其他奇怪的)合并。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。