Git PR合并和结果分支不同

时间:2020-06-05 16:06:17

标签: git merge azure-devops

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

使用Azure DevOps Pull-Request,我们将master分支(在提交01785665a处合并(FF)到production中,将production部署到PROD并感到宾至如归确保我们已实现将master上已分阶段且经过测试的更改推向生产的目标。想象一下,当我们发现生产与登台不一样但有一些旧代码时,我们会感到惊讶。

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

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

Git确信生产是最新的,并且与母版:git merge master(生产中)=> Already up to date

git log(生产)

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

    R4 Release

git log(master)

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

    Merged PR 13135: v1.6.6 ...

azure devops graph

VSCode git graph

Git Extensions Graph

2 个答案:

答案 0 :(得分:1)

所以听起来您一开始就不想合并。听起来您也不需要production分支!您似乎想说的是:“嘿,世界,看看master上的提交,即01785665a吗?这就是我们的“发布4”。

(这不是您的意思。您说的是:“将现有master分支的某些方面和现有production分支的某些方面混合在一起,形成一个新的这就是您所说的,因为它是merge的意思。但这似乎不是您的意思。)

说出你想说的话的方法是标记此提交。例如,您可以将其标记为r4,表示“版本4”。现在您知道,为了测试或发布版本4,您检出r4并将其存档。

此后,master分支可能会增长,但是标签的特殊功能是它永远永久地附加到该提交。因此r4会保持在原处,您可以随时将其签出并返回。

答案 1 :(得分:0)

通过将新提交提交到master分支,然后合并到生产分支来解决此问题。