Git:仅合并特定于分支的提交

时间:2015-02-26 12:24:36

标签: git repository git-merge branching-and-merging

以监控Git存储库和分支机构的方式为您提供背景信息;

我一直在监控从每个sprint开始的两个分支 - release和master。 Master分支来自开发人员创建新分支(特定于任务),实现其更改,以及创建合并到Master的拉取请求。 Release分支是sprint特定的,仍然可以提交给生产。我们只合并提交给Master的分支并由QA验证到Release分支。说得通?如果您希望以固定的时间间隔提交发布版并且实现并验证了特定功能,那么这种方法效果最佳,因此您确切知道下一版本中的内容。

在我遇到以下问题之前它会变得很棒;

  1. DeveloperA已从taskA创建了特定于任务的分支Master
  2. 他多次致taskA分行。
  3. 表示其他developerB从Master创建了他的分支taskB,并对taskB进行了多次更改,并将taskB合并到Master
  4. DeveloperA将Master合并到taskA分支并继续执行他的任务!
  5. 最终他将把taskA分支合并为Master。
  6. 现在我只想将taskA分支合并到Release分支,但是当taskB也合并到taskA分支时,我将taskB分支自动更改为Release分支!我不想要那个。我知道我可以从taskA中提取所有提交的内容,这会让人讨厌。

    有人可以帮助我,无论开发人员是否间歇性地合并Master,最好的方法是将taskA分支更改为Release。我是否遵循错误的Git惯例?

1 个答案:

答案 0 :(得分:1)

在我看来,taskA分支的开发人员(让我们称之为开发人员A)应该在创建拉取请求(或合并它)之前rebase他的分支在最新版本上。开发人员A应在合并或创建拉取请求之前运行此命令:

git rebase -i origin/Release

这将给他一个编辑器,在其中他可以设置他想要“选择”/使用的提交应用于他的分支。如果来自taskB分支的任何提交最终都在他的分支中,那么如果他们尚未准备好发布,他可以删除taskB的提交(只需删除包含这些提交的行)。

这样,同时释放分支中发生的所有更改都将被提取并应用于他的taskA分支。然后,编辑器中选择的所有提交者将再次应用于此。这样,时间表仍然是正确的,不应该有任何冲突。