2017-08-28 67 views
0

我有一个主人和一个开发分支。功能和修补程序分支被合并到开发中,并且从不时开发合并到主开发中。现在我有一个请求从主分支中排除特定的修补程序。这可能以某种方式吗?这是一个相对老的修补程序分支,所以从那时起我有超过30个合并到开发中。或者我应该创建一个新的分支,手动还原这些更改并将其合并到主控中?如何从Git中的主分支中排除特定的合并分支的提交?

+0

如果你可以接受回复场景,那么一定要这样做。摆脱原来的提交,就好像它从未发生过一样是可行的,但与简单地还原修补程序引入的更改相比,它会有更多的工作。就我个人而言,我会尝试检查修补程序分支(或者如果您已删除分支的最后一次提交),恢复它,然后将该新提交合并到开发和主控程序中。 –

+0

这是一个奇怪的要求。如果你想永久地恢复它(对于一个用户来说不是一次性事情),那么肯定只是做一个新的提交手动恢复更​​改。如果包含在几个文件中,而不是从修补程序之前对这些文件进行简单差异检查/检出,可能就足够了。我想尽管你应该详细说明为什么你甚至会接受这个请求。也许答案在别处。 – kabanus

回答

1

你只需要恢复旧hotfix合并到develop分支的提交。

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

A---B------------------I---…  master 
    \    /
     C---D---E--…--H---…   develop 
      \  / \ 
      F--…--G  J--… hotfix/feature 

您使用以下方式使用排除老hotfixmaster分支:

首先,找到合并提交旧hotfix合并为develop分支。由于开发分支合并提交H

然后恢复你的master分支的变化:

git checkout master 
git revert -m 1 <commit id for H> 

注:如果有冲突,恢复合并更改时,您可以修改并保存冲突的文件,你git add .git revert --continue完成回复。

相关问题