以监控Git
存储库和分支机构的方式为您提供背景信息;
我一直在监控从每个sprint开始的两个分支 - release和master。 Master
分支来自开发人员创建新分支(特定于任务),实现其更改,以及创建合并到Master
的拉取请求。 Release
分支是sprint特定的,仍然可以提交给生产。我们只合并提交给Master的分支并由QA验证到Release分支。说得通?如果您希望以固定的时间间隔提交发布版并且实现并验证了特定功能,那么这种方法效果最佳,因此您确切知道下一版本中的内容。
在我遇到以下问题之前它会变得很棒;
taskA
创建了特定于任务的分支Master
。taskA
分行。taskB
,并对taskB进行了多次更改,并将taskB合并到Master
。taskA
分支并继续执行他的任务!现在我只想将taskA
分支合并到Release分支,但是当taskB
也合并到taskA
分支时,我将taskB分支自动更改为Release分支!我不想要那个。我知道我可以从taskA
中提取所有提交的内容,这会让人讨厌。
有人可以帮助我,无论开发人员是否间歇性地合并Master,最好的方法是将taskA分支更改为Release。我是否遵循错误的Git
惯例?
答案 0 :(得分:1)
在我看来,taskA
分支的开发人员(让我们称之为开发人员A)应该在创建拉取请求(或合并它)之前rebase他的分支在最新版本上。开发人员A应在合并或创建拉取请求之前运行此命令:
git rebase -i origin/Release
这将给他一个编辑器,在其中他可以设置他想要“选择”/使用的提交应用于他的分支。如果来自taskB
分支的任何提交最终都在他的分支中,那么如果他们尚未准备好发布,他可以删除taskB
的提交(只需删除包含这些提交的行)。
这样,同时释放分支中发生的所有更改都将被提取并应用于他的taskA
分支。然后,编辑器中选择的所有提交者将再次应用于此。这样,时间表仍然是正确的,不应该有任何冲突。