我有一个Develop分支,它正在积极地致力于很多事情。在我开始工作之前,我喜欢创建一个Develop的特性分支。然而,在我提交一个pull request之前,我喜欢主动解决合并冲突。所以我想做的是将更改拉到Develop分支,并最终将这些更改完整、干净地放到我的特性分支中。
问题是,在我提交了我的pull request之后,它可能需要几周甚至几个月的时间才能被合并。除此之外,特定的提交需要尽可能地保持隔离,因为它经常被挑选到测试分支中,因为在某些时候只请求某些功能。
我相信在我拉下Develop分支的更新后,如果我将Develop分支合并到我的特性分支中,那些提交将成为我的特性分支提交的一部分,我的特性提交将变得混乱并依赖于合并的新提交。我觉得...
现在是使用rebase的时候了吗?或者,因为我的特性分支(fb 1)将在之后很长一段时间内闲置,所以变基会成为一个问题吗?(我读到这是一个问题,因为在pull request等待的时候,更多的提交将被添加到开发分支)我唯一的选择是从刚刚更新的开发分支创建一个新的分支(fb 2),然后将我的功能分支(fb 1)合并到(fb 2),然后将我的pull request(fb 2)放入开发分支吗?
我相信这是一个多余的问题,但我很难找到任何人在这样的情况下给出建议,考虑到分支在被合并之前肯定会变得陈旧。
也许我对合并的工作原理有误解。
谢谢!
2条答案
按热度按时间hgqdbh6s1#
是的,在等待合并请求(MR)被批准和合并时,您可以使用变基来保持特性分支的最新状态。
我在工作中使用的工作流是为特性分支develop,在创建MR之前,我将特性分支重新设置为develop。这样,当MR被批准时合并到develop中就简单地变成了一个没有合并提交的快进合并。这使提交历史保持干净整洁。
如果你的MR过时了,最好让你的特性分支经常更新develop by rebase。如果你等待的时间太长,那么开发中的大量新代码可能会使你的合并变得很困难,有很多冲突需要解决。它还为您提供了使用develop中的新代码测试特性的机会。
kzmpq1sx2#
不要换基地,因为它歪曲了你开始努力的地方。“干净的git历史”目标是以牺牲开发工作时实际发生的事情的准确性为代价的。如果您想测试最新的开发技巧是否能够从您的分支接收更改,请在本地进行测试合并。如果它有东西坏了,修复编译错误,损坏的测试和合并冲突时,这样做合并。当你已经修复了它,做一个公关与此合并包括在内。这代表了实际发生的事情。
我相信在我拉下Develop分支的更新后,如果我将Develop分支合并到我的特性分支中,那些提交将成为我的特性分支提交的一部分,我的特性提交将变得混乱并依赖于合并的新提交。我觉得...
这就是所谓的“反向合并”,是一个明确的禁忌。Linus Torvalds过去经常对这样做的人大发雷霆。始终与检出的高阶分支合并。
你的问题实际上是你的工作没有在合理的时间内合并。如果这是无法更改的,只需重复合并到develop中,将特性分支快速转发到包含所有修复的合并,然后更新PR以反映此提交。不要推开发分支,推你的特性分支。