我有三个jira任务,实际上只有一个被分成三个(步骤1,2,3用于创建用户配置文件)(不是子任务)。所以我被指示为每个jira任务创建分支。我的问题是第二个分支我需要来自第一个分支的代码,第三个分支需要来自第一个和第二个分支的代码。
示例:
分支1 - 创建controller.php
分支2 - 修改后的controller.php
分支3 - 修改controller.php
(请注意,我不只是在分支2和3中添加新行,但我也更改了一些现有的行)
为了实现这一点,我所做的就是从前一个分支出来,以便我可以得到我的改变。因此,分支2从分支1分支出来,分支3从分支2分支出来。
我应该刚创建一个分支吗?或者用git做这个的最好方法是什么?
答案 0 :(得分:0)
让我解释一下 - 如果您需要将这些更改保持独立和模块化,以便您可以将每个JIRA任务所需的更改应用于将来的其他任务,或者可能只需要删除与给定JIRA相关的更改任务,然后分支每一个是非常好的,因为你将有一组可视化分组的提交,并使用视觉git工具,很容易看到发生了什么。您还可以更轻松地修改一系列这些更改,而不是从单个分支中挑选随机提交以获得您所需的更改。
分离每个分支的缺点是你最终必须将3合并在一起,并且根据你改变相同代码行的程度以及相互依赖性是多少,你很可能同时他们之间有冲突,必须在合并时解决(而不是在你开发变更时),而且你很可能最终不得不对3个分支中的每一个进行一些相同的更改,而不是在完成3项任务时重复使用最新的更改。
但是,让我们清楚一点,Git使分支变得非常容易,并且这样做的开销非常小,而且大多数合并都非常轻松(即使存在冲突......)。拥有3个独立的分支也意味着您可以根据需要并行运行所有3个分支上的测试和CI / CD,如果其他人只参与3个变更集中的一个或两个,那么团队就会非常清楚添加到您的工作中(比如由另一个团队成员修复的缺陷等)。
所有这一切,根据所提供的信息,我认为我们无法回答您在特定情况下最适合的方法。您必须根据上述以及特定于您团队的产品和工作流程的类似因素自行拨打电话。
我可以给出一个建议 - 对此敏捷。按照你的团队所说的方式去做,然后找一个小案例,它不需要花费很多时间重新实现这些变化,并尝试将2或3个任务放在一起,散布在一个分支中。这种经验将向你展示的优点和缺点远远超过我在没有所有当地因素的帮助下为你做出决定。额外的奖励 - 如果结果更好,你将有一个实际工作产品的演示,你可以向你的团队展示作为证据 - 或者你可以展示的演示,并询问他们是否试用下一个的意见功能/冲刺/等。或做一个更大的替代方法演示等。
答案 1 :(得分:0)
这是我的建议。我们想让事情更简单,但我们会尽力满足你老板试图让你做的事情。从我所看到的,他/她只是想要不同的分支来完成不同的任务,以便他/她可以跟踪你的工作。虽然可能,但我不认为创建三个不同的分支是最好的方法。你可以做的只是在你的任务上创建子任务。您在主任务上创建 1分支。然后在git上,确保提交消息提到子任务。在您的情况下,您将有三个提交。让我们说在Jira中创建3个子任务时,你有subask-001,subtask-002,subtask-003。所以在你的分支中你必须提交:
"subtask-001 created controller.php" - this is one commit
"subtask-002 modified controller.php to blah blah" - and another commit
"subtask-003 modified controller.php agan.." - another one
这些都将在您创建的一个分支中,然后您可以为它发出拉取请求。在jira中,这三个提交将出现在 EACH 子任务中,只要子任务id与提交消息中提到的内容相匹配。它更简单,但您仍然可以跟踪Jira中的修订。