我有一个主管和开发部门。主(服务器)存储库托管在Azure Devops(内部)中。我对开发分支中的更改做了两个请求(从功能分支到开发)。
PR1:feature-branch-1->开发
PR2:feature-branch-2->开发
然后我想,我需要将开发分支与主分支同步,因此我从开发分支向主分支进行了请求请求,已接受,已提交。
PR3:开发->大师
现在是说我的开发部门是“落后于大师,领先于大师2”
将开发与母版进行比较显示了我的两个功能“拉取请求”。 将母版与开发进行比较显示了我的合并PR以同步分支。
在我的过程中我做错了什么,以及如何解决-使它们同步?
答案 0 :(得分:1)
您所做的过程是正确的,但是取决于您选择了以下哪种情况。
要确保开发与主版本保持同步,您可以选择以下几种方式:
答案 1 :(得分:1)
现在说我的开发部门是“落后1领先2领先 大师”
将开发与母版进行比较显示了我的两个功能“拉取请求”。 将母版与开发进行比较显示了我的合并PR以同步 分支。
您的操作没有错误,答案(1 behind and 2 ahead of master
)也正确。
首先,您需要了解“ Squash Merge”的含义。
让这些提交命名为:从 feature-branch-1 合并到 Development 的提交是 A 。从 feature-branch-2 到 Development 的提交是 B 。从开发到 Master 的合并提交是 C 。
使用Squash Merge
将 feature-branch-1 合并到Development时,它将创建新的提交 A'。实际上,与它们的内容相比,A和A'之间没有区别。但是功能分支本身没有将其合并到默认分支中的提交。
因此,请遵循以下逻辑。当您执行将开发合并到Master时,它将创建一个新的提交 C'。合并后,在Master分支中,只需添加一个新的提交 C',而不是 C 。这就是为什么您落后1 behind and 2 ahead of master
的原因。
将比较分支更改为开发,您会看到功能分支1 和 feature-branch-2 是 2 | 1 。这全是因为壁球合并。
Squash Merge的优点是保持默认的分支历史记录整洁并易于遵循,而无需对团队进行任何工作流更改。
但是,如果您希望它们与历史记录保持同步,请将您的合并类型更改为基本合并。