我们的团队有3个后端开发人员和2个前端开发人员。我们将其Git
用作版本控制系统,Jira
问题和项目跟踪以及Stash
Git存储库。最后,我们使用SourceTree
(和git-flow
)作为Git客户端。
问题在于我们的分支策略:我们使用的是Vincent Driessen的分支模型。每个人都feature branch
为每个问题创建一个,然后将其合并回develop
完成状态(通过拉取请求和对Stash的审查后)。除此之外,我们bugfix branches
为已完成但尚未发布的问题,hotfix branches
已发布的问题和release branches
最终的sprint创建。在这种情况下,没有人可以触摸develop
和/或master
直接触摸。我们的前端团队将其Sass
用作CSS预处理器。最后,我们必须TeamCity
构建更改,然后在master
分支上查找更改。
有足够的背景知识吧?好的,这就是问题所在:假设我们在sprint中有50个问题(每个人10个),在sprint结束时,客户只希望释放其中的35个(无需问为什么,这是客户)。因此,我们需要以某种方式排除15个问题。通常,它们是前端问题。由于我们的设置,develop
此刻一切都在分支中。现在,我们有两种选择:
release branch
from develop
并还原这15个问题(我们需要更新TeamCity或将其合并到master
之后)。master
恢复原状(在这种情况下,无需触摸TeamCity)。master
(这可能最终还会导致很多冲突)。但是它们两者都有此限制:Sass-to-CSS操作。如果我们选择第一个选项,并且存在一些前端问题,那么肯定会有冲突。如果选择第二个选项,那么我们将失去对什么位置的跟踪,我认为这最终是一种滥用。
全球存在一个很大的限制:我们需要进行测试develop
(因此,每个已完成的问题都需要develop
进行测试,这不能更改),并且我们要发布正在发布的内容master
(可以在TeamCity中进行更改,但没人愿意更改它)。
问题是这样的:当同时有一些改进和停止时,我们如何连续使用Git?
如果需要,我可以提供更多详细信息,随时问。