首页 > 解决方案 > 樱桃采摘后的 Azure DevOps 拉取请求

问题描述

我正在使用 Azure DevOps 并遇到 git 和我无法理解的拉取请求的情况并寻求帮助。

这是场景:

我从 dev 中挑选提交 123,将阶段的目标分支放入主题分支。然后将主题分支拉入阶段。

然后,我对来自 dev 的提交 124 和 125 重复此过程。

如果我将 dev 分支中的 file.txt 与 stage 分支中的 file.txt 进行比较,它们现在的内容是相同的。

如果我在拉取请求的“文件”选项卡上将 Azure DevOps 中的拉取请求从 dev 提交到阶段,它会向我显示对 file.txt 的建议更改,就好像开发提交从未被挑选到 file.txt 的阶段版本中一样.

我意识到当我选择樱桃时,会在阶段内创建一个新的提交,因此阶段分支没有意识到已经应用了来自 dev 的提交 123,124,125 - 但 Azure DevOps 文件视图不应该知道 file.txt 的内容是相同的?

标签: gitazure-devopspull-requestgit-cherry-pick

解决方案


发生这种情况是因为您看到的差异不在源分支和目标分支之间。差异在源分支与源分支和目标分支分歧点之间......因此,您可能在分支分歧后的后续修订中修改了目标分支中的文件。没关系,天蓝色 devops 中 PR 中的差异(好吧,至少这是它在 github 和 gitlab 中的正常工作方式)并不关心它们。

提示:将其视为未完成的差异git diff target source,而是git diff target...source(带有 3 个点)......并且这样做是因为如果您使用默认差异进行,PR 中的工作差异将是一个移动目标。随着新的修订被引入目标分支,它总是会改变......你会看到与源分支中执行的工作无关的东西这会使代码审查地狱),这绝对不是什么如果您尝试合并,git 将尝试进入目标分支(合并过程涉及比较 2 个分支自分歧以来的变化情况,因此检查分支的两个尖端之间的差异没有意义)。


推荐阅读