【问题标题】:Azure DevOps Pull Request after Cherry Picking樱桃采摘后的 Azure DevOps 拉取请求
【发布时间】:2021-10-05 15:18:37
【问题描述】:

我正在使用 Azure DevOps,遇到了 git 和我无法理解的 Pull Request 的情况并寻求帮助。

这是场景:

  • 我有两个分支:dev、stage。
  • dev 有许多未合并到阶段的提交。
  • file.txt 存在于两个分支中; dev 中有 3 个提交 (123,124,125) 改变了这个文件,所以它的内容与阶段不同。

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

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

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

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

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

【问题讨论】:

    标签: git azure-devops pull-request git-cherry-pick


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您对此的解释。我希望这种行为在屏幕上更加明显。我确信我不能成为第一个假设拉取请求的文件比较正在与目标分支的尖端进行比较并想知道到底发生了什么的人。我只是 git 之旅的新手。
    猜你喜欢
    • 2012-12-07
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    相关资源
    最近更新 更多