- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在工作中,我们有一个基于 git flow 的 git 工作流程。我们有 3 个主要分支:dev、release 和 master
Dev 是我们目前正在做的事情,master 是我们在生产中拥有的东西,release 是当我们进行发布并进行最后的错误修复时。发布准备就绪后,发布分支将 merge 到主分支并推送到生产环境中。
master 中的任何修补程序也会被推送到 dev(和发布分支(如果当前正在运行))
现在的问题是我们如何保证 merge 后release分支中的代码实际上是master中的代码?换句话说,release 和 master 之间应该没有区别( merge 后)。
当从发布分支 merge 到 master 时,我们也不想处理冲突,所以任何冲突都应该自动处理。
最佳答案
为了避免在 merge 到 master 时发生冲突,您可以使用 `git merge --ours',它会忽略 master 中的任何更改,这些更改会与 release 中的更改发生冲突,但是当您有多个开发流时,这可能会出现问题.例如,如果您有修复生产(master)代码的支持问题,或者如果您有多个发布分支。
merge 冲突是处理分支时的一揽子交易;它们会发生,只需调整您的工作流程以隔离处理它们,以尽量减少任何不利影响。
为了说明这一点,请考虑这样一个场景,在该场景中,生产中有一个已修复错误的现有版本,并且有一个发布分支已准备好移至生产( merge 到主分支)。它看起来像这样:
master -A---------E------G
\ \ / /
bug-fix \ C-D /
\ /
release B--*--*--F
其中,B & C 是从 A 分支出来的,E 是提交 D 在 bug-fix 到 master 上的 merge 提交,G 是提交的 merge 提交F 在发布到master。
如果在 bug-fix 和 release 中更改了相同的文件,则在 G 可能会出现 merge 冲突。如果在 G 处使用了 git merge --ours
,则在 E 处所做的更改可能会丢失。
可以通过分支 master 并将 release merge 到其中来处理 merge ,然后将这个一次性分支 rebase 回 master。只有在流程得到很好控制的情况下才应该这样做,例如指定一个人将所有 merge merge 到 master 中。
在这一点上,G 不会完全像 F,它还将包括在 E 的错误修复提交中引入的更改。
也可以将 bug-fix merge 到 release 以及 master 中,这将使 F 和 G 再次相同。但是,有一种最佳做法是永远不要向下 merge 。这意味着,随着图中分支的顺序排列(顶部更稳定), merge 应该总是从较低的分支到较高的分支。这有两个主要好处,首先是稳定的代码不会 merge 到不太稳定的代码中,分支保持纯粹,因为它们只包含与它们引入的功能相关的更改。例如,如果 D 被 merge 到 release 中,则需要与 release 一起进行测试,然后 release 包含它引入的功能的变更集和变更-错误修复集。
为了防止这成为一个问题,我总是检查更稳定的分支,将不太稳定的分支 merge 到其中,然后从那里开始。
另外,请注意 --ours
是被 check out 的分支,--theirs
是被 merge 的另一个分支。当你改变方向时 merge ,他们所指的更改被交换。
关于git - 将版本 merge 到主版本中,没有产生差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14305882/
我听说过两种数据库架构。 大师级 主从 master-master不是更适合现在的web吗,因为它就像Git一样,每个单元都有整套数据,如果一个宕机也无所谓。 主从让我想起了 SVN(我不喜欢它),你
我们当前将 MySQL 配置为支持故障转移:Site1 Site2。当它们被设置为主/主时。在给定时间点,应用程序服务器仅主动写入一个站点。我们想要设置一个新的故障转移站点。然后我们将拥有 Site
我听说过两种数据库架构。 大师-大师 主从 master-master 不是更适合当今的网络吗,因为它就像 Git,每个单元都有整套数据,如果其中一个发生故障,也没关系。 主从让我想起 SVN(我不喜
我正在创建一个标记为类别的表,其中主类别(父列)包含 0,子类别包含父类别的 ID。我听说这叫引用。我的问题:这张表的结构正确吗?或者是否有更好的方法,例如实现遍历树或类似方法? CREATE TAB
我正在阅读一份关于 C++ 与 C 的文档。该文档说与 C 相比,C++ 编写得非常紧凑。一个例子是,C 允许 main() 函数类型为 void。另一方面,C++ 不允许这样做,他给出了标准中的以下
C main函数和Java main函数有什么区别? int main( int argc, const char* argv[] ) 对比 public static void main(Strin
我一直摸不着头脑,但运气不好。设计器有一个包含 3 栏的站点、两个侧边栏和一个主要内容区域。 专为桌面设计,左栏、主要内容、右栏。但是,在较小的设备上,我们希望首先堆叠主要内容。 所以通常情况下,你可
我一直在阅读有关 Jenkins 主/从配置的信息,但我仍然有一些问题: 是不是真的没有像 Jenkins 主站那样安装和启动从站 Jenkins?我假设我会以相同的方式安装一个主 Jenkins 和
据我了解,Viemodel中MVVM背后的概念包括业务逻辑和/或诸如暴露于 View 的数据的主/明细关系之类的事物 因此,正如我发现的那样,有很多ORM生成器,例如模型的telerik a.o以及另
我们有一个群集,其中包含3个主分区,每个主分区有2个副本。主/副本分片的总文档数相同;但是,对于同一查询/文档,我们得到3个不同的分数。当我们将preference = primary添加为查询参数时
我有一个非常大/旧/长时间运行的项目,它使用相对于启动目录的路径访问文件资源(即应用程序仅在从特定目录启动时才工作)。当我需要调试程序时,我可以从 eclipse 启动它并使用“运行配置”->->“工
谁能向我解释一下为什么我在这段代码上遇到段错误?我一直试图弄清楚这一点,但在各种搜索中却一无所获。当我运行代码而不调用 main(argc, argv) 时,它会运行。 Slave 仅将 argv 中
使用 xcode 中的默认项目作为主从应用程序,如果我在折叠委托(delegate)中放置 print 调试语句,当我旋转设备时它似乎永远不会被触发(事实上我永远无法触发它)。 我编辑的代码位于 Ap
是否有任何产品可以使 mysql 主/从故障转移过程更容易?一些可以自动发生的事情,而不是手动修复它。 最佳答案 [...稍后...;) 你所说的“更容易”是什么?MySQL 有很多解决方案: MyS
我有两个 mysql 数据库。我想做主/主复制。 复制以一种方式进行。然而,反过来说却不然。该错误表明它无法与用户“test@IPADDRESS”连接。 如何将用户名更改为 repl?从未进行过测试,
我正在尝试在 MySQL 中运行以下查询: GRANT REPLICATION SLAVE ON *.* TO 'replication'@’10.141.2.%’ IDENTIFIED BY ‘sl
我正在尝试使用 Android 提供的主/详细流程模板创建一个应用程序,并且我正在尝试将多个操作栏菜单项添加到操作栏的主要部分和详细信息部分。这就是我要实现的目标: (来源:softwarecrew.
我正在寻找一个跨平台的 C++ master/worker 库或工作队列库。一般的想法是我的应用程序将创建某种任务或工作对象,将它们传递给工作主机或工作队列,这将依次在单独的线程或进程中执行工作。为了
我似乎看到很多人在他们的 MySQL 模式中任意分配大尺寸的主/外键字段,例如 INT(11) 甚至 WordPress 使用的 BIGINT(20)。 如果我错了,请纠正我,但即使是 INT(4)
如果我有一个可以与多个键相关联的用户,正确的表设置应该是: 一个表有两列,例如: UserName | Key 没有主键且用户可以有多行,或者: 具有匹配标识符的两个表 Table 1 Us
我是一名优秀的程序员,十分优秀!