2016-04-06 70 views
2

我们最近从svn迁移到git。我们目前有一个发布分支和一个主分支。我们在发布当天将版本合并到主版本并对其进行标记。补丁发布后将版本合并到主版本git

现在,如果我们要做一个补丁发布。这是创建一个关闭主分支作为修补程序分支,并将其合并到主,然后创建一个新的标签,并从那里释放。然后,我们还将该修补程序合并到发行版中,以便在QA进行测试时,发行版具有生产中的所有更改。

然后,当我们必须将发布分支合并回主服务器时,问题就出现了。

1)我们不能做一个快进的释放作为主已发散

2)如果我们做一个正常的合并,甚至将是安全的(这也将增加一个合并提交)将这些代码是有时候会发生什么,我们不确定会发生什么

3)我们可以重新发布master的版本,但这是一个常见的公共分支(会让开发者本地分支变得糟糕?)并且rebasing发布也会很危险? 如果我们不理想的底垫,我们不会对主分支干净的历史与标记点的所有版本无论是

你怎么做一个版本,通常处理这个

+0

“我们在发布当天将版本合并到主版本中”读起来就好像你做了'git checkout master;混帐版本'似乎倒退。 – Schwern

+0

将'release'合并到'master'中。 'master'已经'发散'了,但是它在'release'中也是一样的提交,所以不应该有冲突。您所描述的内容与[git flow](http://nvie.com/posts/a-successful-git-branching-model/)策略类似,这是非常常用的策略。当使用git flow时,有一个'development'分支(类似于'release'分支)。从'master'分支的修补程序与'master'和'development'合并。 'development'稍后可以再次合并到'master'中(在git流的情况下通过'release'分支)。 – Peter

回答

1

Then we also merge that hotfix back into release

We can't do a fast forward release as the master has diverged

一种到方式改善工作流,避免发散的情况是添加更多的合并,只是hotfix合并后:

git checkout relase 
git merge -s ours master 

这样一来,您录制releasemaster被“合并”。

这将允许您稍后进行从releasemaster的快进合并。

+0

在我添加任何进一步的评论之前,您能否详细介绍一下“--ours”?我还检查了合并的git文档,似乎有两个“我们”列出。 – MilindaD

+0

@MilindaD我们的合并策略能够在不改变目的地分支上的*任何*的情况下记录合并。这将允许你创建一个共同的祖先,这将使未来的快速合并成为可能。 – VonC

+0

所以我们把hotfix和master和release合并,然后做一个“我们的”合并来表示我们合并了这个。正确?此外,由于我们将修补程序合并回发布,即使稍后我们执行“我们的”合并时发生冲突,我们仍然可以执行快速合并。正确?也只是为了澄清这是你在你的工作场所(和其他组织)做什么? – MilindaD

相关问题