我遇到了一个问题,即 Bitbucket 上的拉取请求差异中没有出现特定的更改。
涉及四个分支:my-feature-branch、develop、staging-branch 和 feature-xyz(由不同的团队成员处理)。其他团队成员将他们已完成的功能推送到暂存分支,以确保在合并到开发之前一切正常。
以下是我遵循的步骤:
我期望拉取请求显示 my-feature-branch 没有“xyz”更改,因为开发已经包含从 feature-xyz 合并的更改。遗憾的是,恢复的更改已合并到开发中。但幸运的是,另一位团队成员注意到“xyz”更改已无意中恢复,因为他们期待最新版本中的此更新。
我试图理解为什么会发生这种情况以及为什么 Bitbucket 无法显示拉取请求中的差异。据我了解,Git 会比较源分支和目标分支的提交历史记录,然后显示差异。考虑到这一点,我的源分支在其提交历史记录中确实有提交(代码反转),但仍然没有被拾取。
我不是100%确定理解你的问题:
*--*--X--a--b--c--d--e--f--g--h <- develop
\
1--bad--2--revert--3 <- my-feature-branch
第一点:
合并请求视图中显示的差异不是两个分支之间的差异,而是候选分支 (my-feature-branch
) 与该分支与目标分支之间的
分叉点(提交)之间的差异上图中的
X
)。注意:这个“分叉点”也称为合并基点 现在,如果您的分支的历史记录包含随后进行还原的更改,那么最终此更改不在
my-feature-branch
中(在其最顶层的提交中)。
在本地克隆上,可以使用 三点语法: 查看此差异
git diff develop...my-feature-branch
develop
,为什么我在合并请求中看不到它?” :
此更改X
和my-feature-branch
之间差异的一部分,它出现在develop
之后
X
它应该在为 feature-xyz
打开的合并请求中可见