如何排除特定合并分支';是否从Git中的主分支提交?

如何排除特定合并分支';是否从Git中的主分支提交?,git,version-control,merge,cherry-pick,Git,Version Control,Merge,Cherry Pick,我有一个硕士和一个发展分支。功能和修补程序分支合并到develop中,而develop不时合并到master中。现在我请求从主分支中排除特定的热修复程序。这有可能吗?这是一个相对较老的修补程序分支,所以从那时起,我有30多个合并到develope中。或者我应该创建一个新分支,手动恢复更改并将其合并到master 您只需还原旧的修补程序合并到开发分支中的提交 假设如下图所示,您希望在master分支上排除的旧修补程序是从commitF到commitG的提交 A---B---------------

我有一个硕士和一个发展分支。功能和修补程序分支合并到develop中,而develop不时合并到master中。现在我请求从主分支中排除特定的热修复程序。这有可能吗?这是一个相对较老的修补程序分支,所以从那时起,我有30多个合并到develope中。或者我应该创建一个新分支,手动恢复更改并将其合并到master

您只需还原旧的
修补程序
合并到
开发
分支中的提交

假设如下图所示,您希望在
master
分支上排除的旧修补程序是从commit
F
到commit
G
的提交

A---B------------------I---…       master
     \                /
       C---D---E--…--H---…         develop
            \       /     \
             F--…--G        J--…   hotfix/feature
您可以使用以下方法排除
主分支上的旧
修补程序

git checkout master
git revert -m 1 <commit id for H>
首先,找到旧的
修补程序
合并到
开发
分支中的合并提交。作为开发分支上的合并提交
H

然后恢复
主分支上的更改:

git checkout master
git revert -m 1 <commit id for H>
git签出主机
git-m1

注意:如果在还原合并的更改时存在冲突,您可以修改并保存冲突文件,然后您可以
git添加。
git revert--继续执行
以完成还原。

如果您可以接受还原场景,那么一定要这样做。将原来的提交当作从未发生过一样进行处理当然是可行的,但与简单地恢复修补程序引入的更改相比,这将需要更多的工作。就我个人而言,我会尝试签出热修复程序分支(或者如果您删除了分支,则检查上一次提交),将其还原,然后将新提交合并到develop和master中。这是一个奇怪的请求。如果您想永久地恢复它(对于一个用户来说不是一次性的),那么只需手动恢复更改即可进行新的提交。如果包含在几个文件中,那么在热修复之前对这些文件进行简单的区分/签出就足够了。我想你应该详细说明你为什么会接受这个请求。也许答案在别处。