我正在使用 Azure DevOps,遇到了 git 和 pull 请求的情况,我无法理解并寻求帮助。
这是场景:
- 我有两个分支:dev、stage。
- dev 有大量提交尚未 merge 到阶段中。
- file.txt 存在于两个分支中; dev 中的三个提交 (123,124,125) 已经改变了这个文件,因此它的内容与阶段不同。
我从 dev 中挑选提交 123,将阶段的目标分支放入主题分支。然后将主题分支请求 pull 入阶段。
然后,我对 dev 的提交 124 和 125 重复此过程。
如果我将 dev 分支中的 file.txt 与 stage 分支中的 file.txt 进行比较,它们现在的内容是相同的。
如果我在 Azure DevOps 中在 pull 请求的"file"选项卡上提交从开发到阶段的 pull 请求,它会向我显示对 file.txt 的建议更改,就好像开发提交从未被挑选到阶段版本中一样文件.txt。
我意识到,当我挑选时,会在 stage 内创建一个新的提交,因此 stage 分支不会意识到来自 dev 的提交 123,124,125 已被应用 - 但 Azure DevOps 文件 View 不应该知道 file.txt 的内容是一样的吗?
最佳答案
发生这种情况是因为您看到的源分支和目标分支之间不存在差异。差异是在源分支和源分支和目标分支的分歧点之间......所以,您可能在分支分歧后的后续版本中修改了目标分支中的文件。没关系,azure devops 中 PR 的差异(好吧,至少这是它在 github 和 gitlab 中的正常工作方式)并不关心它们。
提示:将其视为未完成的 diff git diff target source
而是 git diff target...source
(带有 3 个点)...这样做是因为如果你使用默认的 diff 来做到这一点,那么 PR 中工作的 diff 将是一个移动目标。随着新的修订被引入目标分支,它总是会发生变化......并且您会看到与源分支中执行的工作无关的事情(这将使代码审查 hell ) )并且如果您尝试 merge ,这绝对不是 git 会尝试进入目标分支的内容( merge 过程涉及比较两个分支自分歧以来的变化情况,因此没有必要检查差异在 Twig 的两个尖端之间)。
关于git - 择优选择后的 Azure DevOps Pull 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68584845/