【问题标题】:Merging changes to a file on different branches to master合并对不同分支上文件的更改以掌握
【发布时间】: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 不是实际代码...

标签: git merge


【解决方案1】:

您的问题似乎是由于您必须在构建和部署该发布版本之前将发布分支合并到主分支。我相信常见的做法是,如果您想部署特定版本,那么实际上构建特定的发布分支并进行部署。这里不需要master参与。

【讨论】:

  • 确实如此。这不是典型的用例。我们正试图从 gitflow(你所描述的)转向更扁平化的策略,这将使我们更接近持续交付,这是最终目标。它的裤子必须保持并发发布分支,但这不在我的控制范围内。
猜你喜欢
  • 2012-06-02
  • 2020-02-21
  • 2015-10-02
  • 2021-01-08
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 2019-04-28
  • 2018-06-09
相关资源
最近更新 更多