如何排除特定合并分支';是否从Git中的主分支提交?
我有一个硕士和一个发展分支。功能和修补程序分支合并到develop中,而develop不时合并到master中。现在我请求从主分支中排除特定的热修复程序。这有可能吗?这是一个相对较老的修补程序分支,所以从那时起,我有30多个合并到develope中。或者我应该创建一个新分支,手动恢复更改并将其合并到master 您只需还原旧的如何排除特定合并分支';是否从Git中的主分支提交?,git,version-control,merge,cherry-pick,Git,Version Control,Merge,Cherry Pick,我有一个硕士和一个发展分支。功能和修补程序分支合并到develop中,而develop不时合并到master中。现在我请求从主分支中排除特定的热修复程序。这有可能吗?这是一个相对较老的修补程序分支,所以从那时起,我有30多个合并到develope中。或者我应该创建一个新分支,手动恢复更改并将其合并到master 您只需还原旧的修补程序合并到开发分支中的提交 假设如下图所示,您希望在master分支上排除的旧修补程序是从commitF到commitG的提交 A---B---------------
修补程序
合并到开发
分支中的提交
假设如下图所示,您希望在master
分支上排除的旧修补程序是从commitF
到commitG
的提交
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中。这是一个奇怪的请求。如果您想永久地恢复它(对于一个用户来说不是一次性的),那么只需手动恢复更改即可进行新的提交。如果包含在几个文件中,那么在热修复之前对这些文件进行简单的区分/签出就足够了。我想你应该详细说明你为什么会接受这个请求。也许答案在别处。