0
我有一个主人和一个开发分支。功能和修补程序分支被合并到开发中,并且从不时开发合并到主开发中。现在我有一个请求从主分支中排除特定的修补程序。这可能以某种方式吗?这是一个相对老的修补程序分支,所以从那时起我有超过30个合并到开发中。或者我应该创建一个新的分支,手动还原这些更改并将其合并到主控中?如何从Git中的主分支中排除特定的合并分支的提交?
我有一个主人和一个开发分支。功能和修补程序分支被合并到开发中,并且从不时开发合并到主开发中。现在我有一个请求从主分支中排除特定的修补程序。这可能以某种方式吗?这是一个相对老的修补程序分支,所以从那时起我有超过30个合并到开发中。或者我应该创建一个新的分支,手动还原这些更改并将其合并到主控中?如何从Git中的主分支中排除特定的合并分支的提交?
你只需要恢复旧hotfix
合并到develop
分支的提交。
假设如下图所示,您要在master
分支上排除的旧修补程序是从承诺F
提交到承诺G
的承诺。
A---B------------------I---… master
\ /
C---D---E--…--H---… develop
\ / \
F--…--G J--… hotfix/feature
您使用以下方式使用排除老hotfix
您master
分支:
首先,找到合并提交旧hotfix
合并为develop
分支。由于开发分支合并提交H
。
然后恢复你的master
分支的变化:
git checkout master
git revert -m 1 <commit id for H>
注:如果有冲突,恢复合并更改时,您可以修改并保存冲突的文件,你git add .
和git revert --continue
完成回复。
如果你可以接受回复场景,那么一定要这样做。摆脱原来的提交,就好像它从未发生过一样是可行的,但与简单地还原修补程序引入的更改相比,它会有更多的工作。就我个人而言,我会尝试检查修补程序分支(或者如果您已删除分支的最后一次提交),恢复它,然后将该新提交合并到开发和主控程序中。 –
这是一个奇怪的要求。如果你想永久地恢复它(对于一个用户来说不是一次性事情),那么肯定只是做一个新的提交手动恢复更改。如果包含在几个文件中,而不是从修补程序之前对这些文件进行简单差异检查/检出,可能就足够了。我想尽管你应该详细说明为什么你甚至会接受这个请求。也许答案在别处。 – kabanus