繁体   English   中英

Git PR 合并和生成的分支不同

[英]Git PR Merge and Resulting Branch is Different

TL/DR:我们将 git 分支master合并到production中,生成的源代码不同。 为什么?

使用 Azure DevOps 拉取请求,我们将我们的master分支(提交01785665a )合并(FF)到production中,将production部署到 PROD,然后回到家,确信我们已经实现了将master分支上的分阶段和测试更改推送到生产的目标。 想象一下,当我们发现生产与登台不同,但有一些旧代码时,我们会感到惊讶。

2个分支如何合并而不相同? master上的最后一次提交01785665a有我最新的更改并且是正确的,但是这些更改c1aa29bda的合并提交中?

从下面的 DevOps 图来看,我们没有从 master 合并,而是一些提交c503afc9 (从 4 月 27 日开始),但也许 Azure Devops 有一个令人困惑的图形(不清楚垂直线指的是哪个分支)。 其他图形显示主01785665a正在合并。

Git 确信生产与 master 是最新的: git merge master (on production) => Already up to date

git日志(生产)

commit c1aa29bda... (HEAD -> production, origin/production)
Merge: 2095cbd 0178566
Date:   Wed Jun 3 10:14:15 2020 +0000

    R4 Release

git日志(主)

commit 01785665a... (HEAD -> master, origin/master)
Merge: bdc6c56 a5e1d32
Date:   Wed May 13 11:03:43 2020 +0000

    Merged PR 13135: v1.6.6 ...

天蓝色 devops 图

VSCode git 图

Git 扩展图

所以听起来你一开始就不想合并。 听起来你也不需要production分支:看来你想说的是,“嘿,世界,在master上看到这个提交,即01785665a ?那是我们的“第 4 版”。

(这不是你说的。你说的是:“将现有master分支的某些方面和现有production分支的某些方面混合在一起,制作一个名为“Release 4”的新混合事物。这就是你的意思说,因为那是merge的意思。但似乎这不是你的意思。)

表达你似乎想说的话的方法是标记这个提交。 例如,您可以将其标记为r4 ,意思是“第 4 版”。 现在您知道为了测试或发布第 4 版,您需要签出r4并将其存档。

此后master分支可能会增长,但标签的特殊功能是它永远附加到那个提交。 因此r4将保持原样,您可以随时查看并返回它。

通过将新提交推送到主分支,然后合并到生产分支来解决该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM