Git母版与开发不同步

时间:2019-06-06 15:20:20

标签: git tfs azure-devops

我有一个主管和开发部门。主(服务器)存储库托管在Azure Devops(内部)中。我对开发分支中的更改做了两个请求(从功能分支到开发)。

  

PR1:feature-branch-1->开发

     

PR2:feature-branch-2->开发

然后我想,我需要将开发分支与主分支同步,因此我从开发分支向主分支进行了请求请求,已接受,已提交。

  

PR3:开发->大师

现在是说我的开发部门是“落后于大师,领先于大师2”

将开发与母版进行比较显示了我的两个功能“拉取请求”。 将母版与开发进行比较显示了我的合并PR以同步分支。

在我的过程中我做错了什么,以及如何解决-使它们同步?

2 个答案:

答案 0 :(得分:1)

您所做的过程是正确的,但是取决于您选择了以下哪种情况。

  • 执行PR合并时,选择了“合并”,这将在目标(主)分支上创建合并提交。因此,师父比发展领先1。
  • 执行PR合并时,选择“ Squash”,在这种情况下,它将创建一个新的提交,其中包含对目标(主)分支的更改。这个Master在开发之前是1次提交,在开发之后是2次提交。
  • 执行快进时,如果不需要合并,则目标分支和源分支现在将相同。而且不会添加合并提交。
  • 将开发重新建立到master上之后,所有更改都将在master分支上重放,然后提交。在这种情况下,您必须强制进行开发。

要确保开发与主版本保持同步,您可以选择以下几种方式:

  • 将主人合并回开发。开发将是之后的1合并提交。
  • 将基础开发到主控上并强制执行。 Develop将与master相同,并且任何未完成的更改都将在development之上重播。
  • 重置以掌握和强制推动。 Develop将与master相同,并且所有未完成的更改都将丢失。
  • 删除/重命名当前的develop分支,并从master创建一个新分支。

答案 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'之间没有区别。但是功能分支本身没有将其合并到默认分支中的提交。 enter image description here

因此,请遵循以下逻辑。当您执行将开发合并到Master时,它将创建一个新的提交 C'。合并后,在Master分支中,只需添加一个新的提交 C',而不是 C 。这就是为什么您落后1 behind and 2 ahead of master的原因。

将比较分支更改为开发,您会看到功能分支1 feature-branch-2 2 | 1 。这全是因为壁球合并

Squash Merge的优点是保持默认的分支历史记录整洁并易于遵循,而无需对团队进行任何工作流更改。

但是,如果您希望它们与历史记录保持同步,请将您的合并类型更改为基本合并