git - VSTS 和 Git : Why does squashing my DEV branch while merging to master says that DEV is both behind and ahead of master?

标签 git azure-devops branching-and-merging

我希望有人能帮助我解决这个问题,因为我正在挠头了解发生了什么,以及是否可以纠正。

我目前正在 VSTS 中开发一个项目,并使用 GIT 作为代码存储库。我有通常的 MASTER 分支,还有一个 DEVELOPMENT 分支。然后,我从 DEVELOPMENT 分支创建功能分支。

当我们在功能分支中完成更改后,我创建一个 Pull Request 并可以成功地将更改 merge 到 DEV 分支中。 DEV 分支然后在 MASTER 后面显示“0”,在 MASTER 前面显示“x”……这是正确的。

当我们准备好将更改 merge 到 MASTER 时,问题就来了。我们创建一个 PULL REQUEST 来执行此操作,并且更改成功地 merge 到 MASTER 中……但是……DEV 分支现在说它比 MASTER 落后 1,但仍然比 MASTER 领先 x!为什么 DEV 1 在 MASTER 后面?为什么 DEV 仍然领先于 MASTER? PULL REQUEST之后,MASTER和DEV不应该是同步的吗?即DEV应该在后面0,在MASTER前面0?

我很有可能没有正确理解 GIT,但我是否可以在 VSTS 中设置错误的某些设置...例如错误设置的分支策略?我在 MASTER 上设置的唯一分支策略(在这个阶段)是“强制执行 merge 策略 - Squash merge ”。

提前致谢。

最佳答案

Squash merge 是您误解的原因。

压缩 merge 时,开发分支的所有提交都被压缩为一个提交。这就是 DEV 落后 master 1 的原因,因为它没有压缩的提交。 DEV 也比 master 早 x,因为 DEV 有 x 个提交,但不在 master 中。

理想情况下,您应该只压缩 merge 您的功能/主题分支,这将为您提供每个功能一个提交。当你 merge 到 master 时,你不应该压缩你的开发分支。因此,如果需要,您可以更改 master 上的分支策略并将该策略放在 DEV 中。我的建议是让您的开发人员决定何时压缩或不压缩。当您在 VSTS 中完成 PR 时,它会为您提供压缩选项。

关于git - VSTS 和 Git : Why does squashing my DEV branch while merging to master says that DEV is both behind and ahead of master?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48862162/

相关文章:

git - 将分支 merge 到 Git 中的多个分支

git如何通过完全覆盖master分支将一个分支 merge 到master分支

git - 如何 merge 推送存储库中的三个旧提交?

azure - 工作项上的按钮 "New branch..."不再工作

azure - 创建索引器,将数据源作为索引内 JSON 文档中的字段

git - 如何将单个文件的一个版本从一个 Git 分支复制到另一个分支?

ruby-on-rails - Heroku 部署错误 : No Default Language

python - 如何在 Python Git 钩子(Hook)中使用 raw_input()?

azure - 变量 Azure Pipelines 内的变量

branch - Perforce:如何在多个分支机构之间进行集成?