分支和合併您的變更
當您處理 Bicep 程式碼時,通常需要同時執行一項以上的作業。 例如,以下是處理您玩具公司網站的兩個案例:
- 您網站的開發小組想要您的協助,以便對 Bicep 檔案進行重要的變更。 不過,小組還不希望這些變更上線。 您必須能夠在處理新版本的同時,對網站的目前上線版本進行微幅調整。
- 您正在進行實驗性變更,並認為這將有助於改善網站的效能。 不過,這些變更仍在初步階段。 您想要等到一切就緒,再將其套用至網站的上線版本。
在此單元中,您會了解 Git 分支。
注意
本單元中的命令僅用於示範概念。 請先不要執行命令。 您很快就會在此練習所學到的內容。
什麼是分支?
分支提供一種方式,讓您有檔案的多個使用中複本。 您可以在每次有需要時時,建立分支和在分支之間切換。 當您完成使用分支時,您可以將其「合併」到另一個分支中。 您也可以將其刪除,這會移除所有變更。
針對所有工作使用分支是常見的做法。 通常,您會將一個分支指定為主要分支,以代表您檔案的已知良好或上線版本。 依照慣例,此分支通常稱為 main。 您可以建立任意數目的其他分支。 當分支的變更準備就緒時,您可以將分支合併到 main 分支中。
建立和簽出分支
您可以快速輕鬆地在 Git 中建立分支。 有幾種方式可以執行這項作業,但最簡單的方法通常是使用 git checkout
命令。 以下範例說明如何建立名為 my-experimental-changes 的新分支:
git checkout -b my-experimental-changes
此命令實際上會執行兩項作業:其會建立 my-experimental-changes 分支,並簽出新建立的分支。 簽出表示您在資料夾中看到的檔案複本,將會反映分支中的內容。 如果您有兩個分支具有不同的變更集合,簽出一個分支後再簽出另一個分支,可讓您在這兩組變更之間切換。
您也可以使用 git checkout
命令切換至現有的分支。 在此範例中,您會簽出 main 分支:
git checkout main
注意
您通常需要認可變更,才能簽出不同的分支。 如果您無法簽出,Git 將會警告您。
處理分支
切換至分支之後,您可以像平常一樣認可檔案。 事實上,您目前所做的一切都已在分支上。 您之前是在 main 分支上工作,也就是建立新存放庫時的預設分支。
當您在簽出分支時認可某些變更時,認可便會與分支相關聯。 當您切換至不同的分支時,可能不會在 git log
歷程記錄中看到認可,直到合併分支為止。
合併分支
分支是將進行中工作與 Bicep 程式碼目前上線版本區分的絕佳方式。 但完成變更分支上的檔案之後,您通常會想要將變更合併回 main 分支。
當您在一個分支上工作時,您可以使用 git merge
命令,將另一個分支的變更合併到最新分支。
注意
在合併之前,請務必簽出合併目的地分支 (通常稱為「目標」分支)。 請記住,您要從另一個分支合併到目前的工作分支。
以下範例示範如何簽出 main 分支,然後將來自 my-experimental-changes 分支的變更合併到 main 分支中。 最後,您會刪除 my-experimental-changes 分支,因為已不再需要該分支。
git checkout main
git merge my-experimental-changes
git branch -d my-experimental-changes
提示
當您與其他人合作時,通常會使用提取要求來合併變更,而不是直接合併分支。 您很快就會深入了解協同作業和提取要求。
合併衝突
當 Git 將變更從某個分支合併到另一個分支時,會查看已經修改過的檔案,並嘗試將變更合併在一起。 有時,您可能會對兩個不同分支進行相同的程式碼變更。 在這些情況下,Git 無法選擇正確的程式碼版本,因此會改為建立「合併衝突」。
我們不會在此課程模組中討論合併衝突,但請務必了解它可能會發生。 而且當您與其他人共同作業時,這個情況會更加常見。 在此課程模組的總結中,我們會提供有關 Git 和 Visual Studio Code 如何協助您解決合併衝突的詳細資訊連結。
Git 工作流程
在本課程模組中,您只會了解分支的基本概念。 不過,分支的功能很強大,而且可讓您在工作上有很大的彈性。 例如,您可以對分支再建立其他的分支,以及將分支與任何其他分支合併。 您可以使用分支來建立各種不同的工作流程,讓這些工作流程支援您和小組喜愛的工作方式。
在本課程模組中,我們會使用一個簡單的工作流程,稱為「主幹型開發」。 在此工作流程中,您會有單一「主幹」分支 例如,我們在此發行項的範例中使用 main。 該分支代表您程式碼的已知良好版本。 當您進行變更或執行任何工作時,您會在此主幹中建立分支。
主幹型開發不建議直接在主幹分支上進行變更。 您嘗試只在短時間內保留其他分支,這有助於將合併衝突降至最低。 然後,您會在完成工作片段時合併和刪除這些分支。
還有其他在小組環境中很常見的工作流程,您可能會想要在此類環境中控制發佈變更的頻率。 在此課程模組的總結中,我們會提供有關 Git 工作流程的詳細資訊連結。