極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有:
- 極狐GitLab 中文文檔
- 極狐GitLab 中文論壇
- 極狐GitLab 官網
合并沖突 (BASIC ALL)
合并沖突發生在合并請求的兩個分支(源分支和目標分支)對相同代碼行進行了不同的修改。在大多數情況下,GitLab 能夠自動合并這些更改,但當出現沖突時,你需要決定保留哪些更改。
要解決有沖突的合并請求,你必須執行以下操作之一:
- 創建一個合并提交(merge commit)。
- 通過變基(rebase)解決沖突。
極狐GitLab 通過在源分支中創建一個合并提交來解決沖突,而不將其合并到目標分支。然后,你可以審核和測試該合并提交,以確保它不包含任何意外的更改,并且不會破壞構建。
理解沖突塊
當 Git 檢測到一個需要你決定的沖突時,它會使用沖突標記來標記沖突塊的開始和結束:
-
<<<<<<< HEAD 標記沖突塊的開始。 你的更改會顯示在這里。
-
======= 標記你的更改的結束。 目標分支中的最新更改會顯示在這里。
-
.>>>>>>> 標記沖突的結束。
要解決沖突,刪除:
- 你不想保留的沖突行版本。
- 三個沖突標記:開始標記、結束標記,以及兩個版本之間的 ======= 行。
你可以在用戶界面中解決的沖突
你可以在 GitLab 用戶界面中解決合并沖突,如果沖突文件符合以下條件:
- 是非二進制文本文件。
- 文件大小小于 200 KB,且已添加沖突標記。
- 使用 UTF-8 兼容編碼。
- 不包含沖突標記。
- 在兩個分支中的路徑相同。
如果文件不符合這些條件,你必須手動解決沖突。
解決沖突的方法
極狐GitLab 在用戶界面中顯示了可供解決的沖突,您也可以使用以下方法解決沖突:
-
交互模式:適用于只需要選擇保留哪一行版本的沖突。
-
內聯編輯器:適用于需要手動編輯以合并更改的復雜沖突。
-
命令行:提供對復雜沖突的完全控制。有關更多信息,請參閱 從命令行解決沖突.。
交互模式
交互模式將目標分支合并到源分支,并根據你選擇的更改進行合并。
使用交互模式解決合并沖突的步驟:
1.在左側邊欄,選擇 搜索或前往 并找到你的項目。
2.選擇 代碼 > 合并請求 并找到相應的合并請求。
3.選擇 概述,然后滾動到合并請求報告部分。
4.找到合并沖突消息,并選擇 解決沖突。
GitLab 顯示一份包含合并沖突的文件列表。沖突的行會被高亮顯示。
5.對于每個沖突,選擇 使用我們的版本 或 使用他們的版本 來標記你希望保留的沖突行版本。這個決定被稱為 “解決沖突”。
6.當你解決所有沖突后,輸入 提交信息。
7.選擇 提交到源分支。
內聯編輯器
一些合并沖突更加復雜,你需要手動編輯行來解決它們。
合并沖突解決編輯器幫助你在 GitLab 中解決這些沖突:
1.在左側邊欄,選擇 搜索或前往 并找到你的項目。
2.選擇 代碼 > 合并請求 并找到相應的合并請求。
3.選擇 概述,然后滾動到合并請求報告部分。
4.找到合并沖突消息,并選擇 解決沖突。
GitLab 顯示一份包含合并沖突的文件列表。
5.找到需要手動編輯的文件,并滾動到沖突塊。
6.在該文件的標題欄中,選擇 內聯編輯 來打開編輯器。在這個例子中,沖突塊從第 1350 行開始,到第 1356 行結束:
7.解決沖突后,輸入 提交信息。
8.選擇 提交到源分支。
變基
如果你的合并請求卡在 檢查自動合并能力 的消息上,你可以:
-
使用極狐GitLab UI 中的 /rebase 快速操作。
-
使用 Git 進行變基。
要排查 CI/CD 管道問題,請參閱 調試 CI/CD 管道。
使用快速操作進行變基
你可以通過 GitLab UI 使用 /rebase 快速操作 來進行變基。
先決條件:
- 不存在合并沖突。
- 你必須至少擁有源項目的 開發者角色。
- 如果合并請求位于一個 Fork 中,則該 Fork 必須允許 來自上游項目成員的提交。
使用快速操作進行變基的步驟:
1.進入你的合并請求。
2.在評論中輸入 /rebase。
3.選擇 評論。
極狐GitLab 將調度并執行該分支與默認分支的變基操作。