Git 將 Master 拉入分支

Yahya Irmak 2023年9月13日
  1. 從主分支下載到另一個分支
  2. 使用git merge命令將更改從master拉入到另一個分支
  3. 使用git rebase命令將更改從master拉入到另一個分支
  4. 使用git pull命令將"主"分支的更改合併到另一個分支中
  5. 總結
Git 將 Master 拉入分支

在使用 Git 工具開發軟體時,你可以為不同的功能創建不同的分支。當對主分支進行更改時,這些更改不會自動添加到其他分支。

本文將介紹如何在 Git 中將所有更改從主分支拉入另一個分支。

從主分支下載到另一個分支

使用 Git 工具時,您可能需要將在主分支中所做的更改拉入到另一個分支中。這些更改不會自動轉移,因此您需要手動執行。

接下來的文章將介紹三種不同的方法將更改從主分支拉入到dev分支

{{%注意標題=“注意”%}}

由於可能被視為對奴隸的不人道對待,主分支被重新命名為main

{{%/ 注意%}}

使用git merge命令將更改從master拉入到另一個分支

另一種實現此目的的方法是使用git merge命令

步驟 1:切換到master分支

首先切換到master分支。可以使用git checkout命令完成此操作:

git checkout master

此命令確保您在master分支上,這是您要引入功能分支的更改來源。

步驟 2:拉取最新更改

在合並之前,重要的是要確保您的本地master分支與遠程master分支保持同步。為此,使用git pull命令:

git pull origin master

此命令從遠程master分支拉取最新更改並將其合併到本地master分支。

步驟 3:切換到您的功能分支

現在,切換回您要拉取更改的功能分支。使用git checkout命令,將feature-branch替換為實際功能分支的名稱:

git checkout feature-branch

步驟 4:將master合併到您的功能分支

在您的功能分支已檢查出的情況下,可以使用git merge命令將master分支中的更改合併到其中:

git merge master

git merge進行更詳細的查看

git merge命令用於將一個分支的更改合併到另一個分支中。在這種情況下,我們正在將master分支中的更改合併到您的功能分支中。

如果兩個分支自從分叉以來都有新的更改,則 Git 會自動創建一個新的合併提交。如果沒有衝突的更改,合併將很簡單。

步驟 5:解決衝突(如果有)

如果 Git 在合併過程中遇到衝突,它將暫停並指示具有衝突的文件。您需要打開這些文件,找到衝突標記,並決定如何解決。解決衝突後,保存文件。

在解決文件中的衝突後,使用git add命令將其標記為已解決:

git add <conflicted-file>

對每個具有衝突的文件重複此過程。

步驟 6:提交合併

在解決所有衝突並將文件標記為已解決後,使用有意義的提交消息提交合併:

git commit -m "Merge branch 'master' into feature-branch"

此提交消息描述了合併操作,以供將來參考。

步驟 7:推送已更新的功能分支

現在,您已經成功將更改從master合併到您的功能分支中,將已更新的功能分支推送到遠程儲存庫:

git push origin feature-branch

使用git rebase命令將更改從master拉入到另一個分支

實現此目的的另一種方法是使用git rebase命令。我們將引導您使用git rebase將更改從master分支拉入到另一個分支的過程。

步驟 1:切換到master分支

首先切換到master分支。可以使用git checkout命令完成此操作:

git checkout master

此命令確保您在master分支上,這是您要將更改合併到功能分支的源頭。

步驟 2:拉取最新更改

在進行變基之前,重要的是要確保您的本地master分支與遠程master分支保持同步。為此,使用git pull命令:

git pull origin master

此命令從遠程master分支拉取最新更改並將其合併到本地master分支。

步驟 3:切換到您的功能分支

現在,切換回您要拉取更改的功能分支。使用git checkout命令,將dev替換為實際功能分支的名稱:

git checkout dev

步驟 4:將dev變基在master

在使用特徵分支的情況下,您可以將其重新基礎到已更新的"主"分支上。 在這種情況下,使用git rebase命令,後面跟上您要重新基於的分支的名稱,在這裡是"主"分支:

git rebase master

Git會自動將特徵分支的提交應用於"主"分支之上。在此過程中,如果您的更改與"主"分支的更改之間有任何衝突,Git將暫停重新基於並要求您手動解決這些衝突。

git rebase命令是一個重寫提交歷史的強大工具。

在此上下文中運行git rebase master時,Git會使用您的特徵分支的整個提交歷史(從它與"主"分支分開的地方開始),並將每個提交重新應用於當前的"主"分支之上。

這實際上將您的特徵分支移動到"主"分支的頂端,就像您是從當前的"主"分支狀態中創建它一樣。

使用git rebase而不是git merge的優點之一是它產生線性提交歷史,這使得理解和導航更加容易。

但是,由於它重寫了提交歷史,因此在協作環境中特別需要謹慎使用。

第五步:解決衝突(如果有)

如果Git在重新基於過程中遇到衝突,它將暫停並顯示哪些文件存在衝突。您需要打開這些文件,找到衝突標記並決定如何解決它們。解決衝突後,保存文件。

在解決文件中的所有衝突後,使用git add命令將其標記為已解決的:

git add <conflicted-file>

對於每個存在衝突的文件,重複此過程。

第六步:繼續重新基於

在解決所有衝突並將文件標記為已解決後,您可以使用以下命令繼續重新基於:

git rebase --continue

Git將將您的特徵分支上剩餘的提交應用於"主"分支之上。

第七步:將更新後的特徵分支推送到遠程存儲庫

現在您已成功將特徵分支重新基於"主"分支,可以將更新後的特徵分支推送到遠程存儲庫:

git push origin dev

git fetch rebase

使用git pull命令將"主"分支的更改合併到另一個分支中

讓我們逐步介紹使用git pull從"main"分支更新您的工作分支的步驟。

第一步:切換到您的工作分支

首先,切換到您希望使用"main"分支的更改更新的分支。您可以使用git checkout命令來執行此操作。將"feature-branch"替換為您的工作分支的名稱:

git checkout feature-branch

此命令確保您處於您要更新的分支上。

第二步:從"main"分支拉取更改

現在您在工作分支上,可以使用git pull命令從"main"分支擷取並合併最新更改。

git pull命令是兩個Git命令的組合:git fetchgit merge。它從遠程存儲庫擷取更改並將其集成到當前分支中。

git pull origin main --allow-unrelated-histories

這個命令的每個部分的作用如下:

  • git pull:啟動拉取的過程。
  • origin:遠程存儲庫的默認名稱。如果您正在使用不同的遠程存儲庫,請將origin替換為其名稱。
  • main:您要從中拉取更改的分支。如有需要,可以指定其他分支名稱。
  • --allow-unrelated-histories:此選項允許Git合併不相關的歷史記錄,這在合併具有不同提交歷史記錄或獨立創建的分支時很有用。

理解--allow-unrelated-histories

當您從有不同提交歷史記錄的分支中拉取更改時,--allow-unrelated-histories選項是必需的。

當您合併或拉取具有獨立創建或與當前分支沒有共同祖先的分支中的更改時,可能會出現這種情況。

通過使用--allow-unrelated-histories,您告訴Git即使提交歷史記錄沒有明確的共同起點,也應繼續進行合併。它是將不相關分支集成到單一分支中的方法。

第三步:解決衝突(如果有)

在合併過程中,如果您的工作分支和"main"分支中的更改重疊或相互衝突,Git可能會標識衝突。當出現衝突時,Git將暫停並指示哪些文件存在衝突。

解決衝突時,打開程式編輯器中的衝突檔案。在這些檔案中,您會看到以衝突標記<<<<<<<=======>>>>>>>分段的部分。手動編輯檔案,選擇保留哪些變更和丟棄哪些變更。

在解決檔案中的衝突後,儲存變更。

步驟 4:標記衝突為已解決

解決檔案中的衝突後,您需要使用git add指令將其標記為已解決。將<conflicted-file>替換為實際的檔案名稱:

git add <conflicted-file>

對於每個有衝突的檔案,都要重複這個步驟。

步驟 5:提交合併

在解決衝突並標記檔案為已解決後,您需要使用有意義的提交訊息提交合併:

git commit -m "Merge changes from main into feature-branch"

該提交訊息應描述合併的目的,以供日後參考。

步驟 6:推送更新後的分支

最後,將您在工作分支上做的變更推送到遠端儲存庫中:

git push origin feature-branch

這個指令確保變更被保存在遠端儲存庫中,使其可以被其他團隊成員存取,如果您正在共同開發該專案的話。

git pull

總結

在軟體開發中,為各種功能或錯誤修復維護不同的分支是一個常見的做法。然而,保持這些分支與main分支的最新變更同步是非常重要的,以確保日後的整合過程順利進行。

在本文中,我們探討了從main分支將變更拉取到另一個分支的三種不同方法:使用git mergegit rebasegit pull。每種方法都有其優點和使用情境。

作者: Yahya Irmak
Yahya Irmak avatar Yahya Irmak avatar

Yahya Irmak has experience in full stack technologies such as Java, Spring Boot, JavaScript, CSS, HTML.

LinkedIn

相關文章 - Git Pull