簡體   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