git - 樱桃采摘后的 Azure DevOps 拉取请求
问题描述
我正在使用 Azure DevOps 并遇到 git 和我无法理解的拉取请求的情况并寻求帮助。
这是场景:
- 我有两个分支:dev,stage。
- dev 有许多尚未合并到阶段的提交。
- file.txt 存在于两个分支中;dev 中有三个提交(123,124,125)已经改变了这个文件,所以它在内容方面与阶段不同。
我从 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 的内容是相同的?
解决方案
发生这种情况是因为您看到的差异不在源分支和目标分支之间。差异在源分支与源分支和目标分支分歧点之间......因此,您可能在分支分歧后的后续修订中修改了目标分支中的文件。没关系,天蓝色 devops 中 PR 中的差异(好吧,至少这是它在 github 和 gitlab 中的正常工作方式)并不关心它们。
提示:将其视为未完成的差异git diff target source
,而是git diff target...source
(带有 3 个点)......并且这样做是因为如果您使用默认差异进行,PR 中的工作差异将是一个移动目标。随着新的修订被引入目标分支,它总是会改变......你会看到与源分支中执行的工作无关的东西(这会使代码审查地狱),这绝对不是什么如果您尝试合并,git 将尝试进入目标分支(合并过程涉及比较 2 个分支自分歧以来的变化情况,因此检查分支的两个尖端之间的差异没有意义)。
推荐阅读
- ruby-on-rails - Rails 5.2:在使用 Turbolinks 时如何使用特定于页面的 JS 脚本?
- google-apps-script - 如何在不删除容器/文件的情况下同时从多个 Google 文档或表格中删除容器绑定脚本?
- r - 在ggplot2的geom中调用alpha参数时如何更改连续比例图例的透明度?
- json - JSON 无法将数据获取到 SQLite3 表中
- c++ - 调车场算法动态函数生成
- c++ - 我的代码没有执行 Visual Studio 2017,C++
- c# - 如何检查游戏对象是否有任何类型的组件?
- java - 在 TextView 中保留最近收到的短信
- javascript - 从顶部动画不使用负值?
- c++ - 在 C++ 中生成复合排列的优雅方法