【发布时间】:2017-05-03 16:25:36
【问题描述】:
请考虑以下带有一行代码的 git 项目:
master:
x=0
我现在从 master 创建 2 个新主题分支,用于 2 个不同的即将发布的版本:
git branch release1
git branch release2
我对这两个都做了提交:
release1:
x=1
release2:
x=2
现在,假设我们要将 release1 部署到生产环境,因此我们将 release1 合并到 master、构建 master 和部署。这很好。
git checkout master
git merge release1
OK
master:
x=1
但是,假设几周过去了,我们现在想要将 release2 部署到生产环境。我们想将release2合并到master,build master和deploy。但是,由于单行代码已经在不同的分支上进行了编辑,所以我们会遇到冲突。
git checkout master
git merge release2
Conflict
我知道我可以使用合并策略来自动接受来自 release2 的更改...
git merge --strategy-option theirs release2
...但是,虽然这在具有单行代码的项目中是安全的,但在现实世界的项目中却不是。
我在这里所做的,即维护多个当前发布的分支,这些分支是用于部署的串行候选,这似乎是 git 的常见用例,但我无法弄清楚 git 没有简单的方法来适应这个。很确定我错过了一些基本逻辑,但我看不到它。
【问题讨论】:
-
如果只是几行代码,比如“我们在这个分支上有哪个版本”之类的,为什么不直接把它放到合并冲突中并手动处理呢,如果你不不想使用任何自动魔法策略?
-
听起来像是应该在配置文件中处理的东西,这些文件不会进入版本控制。如果它打算通过版本控制来处理,那么预计会发生冲突。
-
我用一行代码来说明问题。这涉及的项目很复杂,我们确实需要它来实现自动化。
-
x=1 不是实际代码...