使用擷取、合併和提取更新程序代碼

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 |Visual Studio 2022

當專案有數個參與者時,下載並整合其他人上傳至專案遠端存放庫的工作,以保持本機 Git 存放庫更新。 這些 Git 命令會更新本機存放庫:

  • Git 擷取 會下載其他人上傳至遠端存放庫的任何新認可。 本機存放庫快取中的遠端追蹤分支會更新—本機分支保持不變。
  • Git 合併 會將一或多個來源分支的認可整合到目標分支中。
  • Git rebase 會將來源分支的認可整合到目標分支中,但使用與 Git 合併不同的策略。
  • Git 提取 會執行擷取,然後執行合併或重新基底,以將擷取的認可整合到您目前的本機分支。

當您將本機存放庫與遠端存放庫同步處理時,Visual Studio 會使用這些 Git 命令的子集。

如需 Git 工作流程的概觀,請參閱 Azure Repos Git 教學課程

本文提供下列工作的程式:

  • 使用 fetch 下載變更
  • 使用 合併重新基底更新分支
  • 使用 提取下載變更和更新分支

使用 fetch 下載變更

Git 擷取會下載本機存放庫中不存在的遠端分支認可和參考的檔案物件,並更新 本機存放庫快取中的遠端追蹤 分支。 遠程追蹤分支是本機快取遠端分支的唯讀複本,不是您的本機分支。 Git 擷取不會更新本機分支。 例如,如果所 origin 指定的遠端存放庫具有 bugfix3 分支,Git 擷取將會更新名為 origin/bugfix3 的遠端追蹤分支,而不是您的本機 bugfix3 分支。 您可以使用遠端追蹤分支來:

  • 比較遠端追蹤分支與本機分支,以檢閱擷取的變更。
  • 將遠端追蹤分支合併至本機分支。
  • 從遠端追蹤分支建立新的本機分支。

Visual Studio 2022 提供 Git 版本控制體驗,方法是使用 Git 功能表、Git 變更,以及透過 方案總管 中的操作功能表。 Visual Studio 2019 16.8 版也提供 Team Explorer Git 使用者介面。 如需詳細資訊,請參閱 Visual Studio 2019 - Team Explorer 索引標籤。

  1. 在 [ Git 變更] 視窗中,選擇 [ 擷取]。 然後選取 [傳出/傳入 ] 以開啟 [Git 存放庫 ] 視窗。

    Visual Studio 2019 [Git 變更] 視窗中 [擷取] 按鈕和 [連入] 鏈接的螢幕快照。

    您也可以從 Git 功能表選擇 [ 擷取 ]。

    Visual Studio 2019 中 Git 功能表中 [擷取] 選項的螢幕快照。

  2. 在 [ Git 存放庫 ] 視窗中,擷取的認可會出現在 [傳入 ] 區段中。 選取擷取的認可,以查看該認可中已變更的檔案清單。 選取已變更的檔案,以查看已變更內容的差異檢視。

    Visual Studio 2019 中 Git 存放庫功能表的螢幕快照。

提示

擷取 不會刪除本機存放庫快取中不再有遠端對應專案遠端追蹤分支。 若要設定 Visual Studio 在 Fetch 期間修剪過時的遠端追蹤分支:

  • 選取 [工具>選項>] 原始檔控制>Git 全域 設定。
  • 將擷 期間修剪遠端分支選項設定為 True

在 Git 擷取之後,您可以比較本機分支與其對應的遠端追蹤分支,以查看遠端分支上的變更。 如果您決定使用擷取的變更來更新目前的本機分支,您可以執行 Git 合併重新基底。 或者,您可以執行 Git 提取,其結合了 Git 擷取與 Git 合併或重新基底。 Git 合併和 Git 重新基底會藉由將來源分支的認可套用至目標分支,以更新目標分支。 不過,Git 合併和 Git 重新基底會使用不同的策略。 如需詳細資訊,請參閱使用合併或重新基底更新分支和重新基底與合併的時機。

使用合併或重新基底更新分支

Git 合併和 Git 重新基底會將來源分支的認可整合到您目前的本機分支(目標分支)。 Git 合併執行快速轉寄無快速向前 合併。 無快速向前合併也稱為 三向 合併或 true 合併。 Git rebase 是另一種合併類型。 下圖顯示這些合併類型。

顯示使用合併和重新基底時認可前後認可的圖表。

Git 合併和 Git rebase 在 Git 工作流程廣泛使用。 在處理本機功能或 Bugfix 分支時,常見的作法是:

  1. 定期提取以擷取和合併遠端認可,讓您的本機main分支保持其遠端對應專案的最新狀態。
  2. 使用重新基底或合併,將本機 main 分支更新整合到您的本機功能分支。
  3. 工作推送 至對應的遠端分支,以備份您在本機功能分支上的工作。
  4. 在功能完成時,建立 提取要求 ,將您的遠端功能分支合併至遠端 main 分支。

此方法可協助您:

  • 請留意其他可能會影響您工作的最新工作。
  • 立即解決您的工作與其他人之間的任何衝突。
  • 在最新的項目內容上套用您的新功能。
  • 取得工作的提取要求檢閱。

合併

針對 Git 合併,如果目標分支的提示存在於來源分支內,預設合併類型將會是快速向前合併。 否則,預設合併類型會是無快速向前合併。

如果目標分支的提示與來源分支不同,則快速轉寄 Git 合併永遠無法發生合併衝突,因為 Git 不會套用快速轉送合併。 根據預設,Git 會盡可能使用快速轉寄合併。 例如,Git 會在本機分支上套用快速轉送合併,而您只藉由從遠端對應分支提取來進行更新。

No-fast-forward Git 合併會產生新的目標分支「合併認可」,以整合來源分支變更與目標分支變更。 適用的變更是在兩個分支通用的最後一次認可之後進行的變更。 在上圖中,認可 C 是兩個分支中最後一個常見的認可。 如果任何來源分支變更與任何目標分支變更衝突,則 Git 會提示您解決合併衝突。 合併認可 (L) 包含整合式來源分支和目標分支變更。 來源和目標分支秘訣 (K 和 E) 是合併認可的父代。 在分支的認可歷程記錄,合併認可是合併作業的實用標記,並清楚地顯示哪些分支已合併。

Git 合併只會修改目標分支,來源分支會維持不變。 當您遇到一或多個合併衝突時,您必須加以解決,才能完成合併。 或者,您可以取消合併作業,並將目標分支傳回其先前的狀態。

如需合併選項和策略的詳細資訊,請參閱 Git 參考手冊Git 合併策略

提示

如果來源分支是遠程追蹤分支,請在合併之前執行 Git 擷取 ,以確保分支是最新的。

  1. 從功能表列選擇 [Git > 管理分支 ],以開啟 [Git 存放庫 ] 視窗。

    Visual Studio 2019 Git 功能表中 [管理分支] 選項的螢幕快照。

  2. 在 [ Git 存放庫 ] 視窗中,以滑鼠右鍵按兩下目標分支,然後選取[ 簽出]。

    Visual Studio 2019 [Git 存放庫] 視窗中 [簽出] 選項的螢幕快照。

  3. 以滑鼠右鍵按兩下來源分支,然後選取 [將source-branch合併<至 <target-branch>>]。

    Visual Studio 2019 [Git 存放庫] 視窗中 [合併] 選項的螢幕快照。

  4. Visual Studio 會在成功合併之後顯示確認訊息。

    Visual Studio 2019 [Git 存放庫] 視窗中合併確認訊息的螢幕快照。

    如果合併因合併衝突而停止合併,Visual Studio 會通知您。 您可以 解決衝突,或取消合併並返回合併前狀態。

    Visual Studio 2019 [Git 存放庫] 視窗中合併衝突訊息的螢幕快照。

Rebase

Git rebase 會重新設定目標分支的認可歷程記錄,使其包含所有來源分支認可,後面接著自上次一般認可之後的所有目標分支認可。 另一個檢視方法是 Git 重新基底會在來源分支歷程記錄上方重新執行目標分支中的變更。 如果任何來源分支變更與任何目標分支變更衝突,則 Git 會提示您解決合併衝突。 Git rebase 不會建立合併認可。 值得注意的是,Git 重新基底會變更現有目標分支認可的順序,這不是其他合併策略的情況。 在上 中,commit K' 包含與 K 相同的變更,但有新的認可標識碼,因為它會連結回認可 E,而不是 C。

Git 重新基底只會修改目標分支,來源分支會維持不變。 當您遇到一或多個合併衝突時,您必須加以解決,才能完成重新基底。 或者,您可以取消重新基底作業,並將目標分支傳回其先前的狀態。

如果您是處理功能或 Bugfix 分支的唯一人員,請考慮使用 Git rebase 將新的 main 分支認可整合到其中。 否則,請使用 Git 合併。 如需 Git rebase 的詳細資訊,以及使用時機,請參閱使用 Rebase 和 Rebase 與 merge 套用變更。

提示

如果來源分支是遠程追蹤分支,請在重新基底之前執行 Git 擷取 ,以確保分支是最新的。

  1. 選擇 [Git > 管理分支 ] 以開啟 [Git 存放庫 ] 視窗。

    Visual Studio 2019 Git 功能表中 [管理分支] 選項的螢幕快照。

  2. 在 [ Git 存放庫 ] 視窗中,以滑鼠右鍵按兩下目標分支,然後選取[ 簽出]。

    Visual Studio 2019 [Git 存放庫] 視窗中分支操作功能表中 [簽出] 選項的螢幕快照。

  3. 以滑鼠右鍵按兩下來源分支,然後選取 [將目標分支重新設定<為<source-branch>>]。

    Visual Studio 2019 [Git 存放庫] 視窗中分支操作功能表中 [Rebase] 選項的螢幕快照。

  4. Visual Studio 會在成功重新基底之後顯示確認訊息。

    Visual Studio 2019 [Git 存放庫] 視窗中重新基底確認訊息的螢幕快照。

    如果因合併衝突而停止重新基底,Visual Studio 會通知您。 您可以 解決衝突,或取消重新基底並返回預先重新基底狀態。

    Visual Studio 2019 [Git 存放庫] 視窗中重新建置衝突訊息的螢幕快照。

使用提取下載變更和更新分支

根據預設,Git 提取會結合 Git 擷取 和 Git 合併 ,以從其遠端對應專案更新您目前的本機分支。 或者,Git 提取可以執行 Git rebase ,而不是 Git 合併。

與 Git 擷取不同,Git 提取會在從遠端存放庫下載新認可之後立即更新您目前的本機分支。 當您知道想要在 Git 擷取之後立即更新目前本機分支時,請使用 Git 提取。

提示

若要在提取將 Visual Studio 設定為重新基底,而不是合併:

  1. 從 Git 功能表中,移至 [工具>選項>] 原始檔控制>Git 全域 設定。
  2. 選擇 選擇選項時的 Rebase 本機分支設定為 True
  1. 在 [ Git 變更] 視窗中,選擇 [ 提取]。

    Visual Studio 2019 [Git 變更] 視窗中 [提取] 按鈕的螢幕快照。

    您也可以從 Git 功能表選擇 [ 提取 ]。

    Visual Studio 2019 中 Git 功能表中 [提取] 選項的螢幕快照。

  2. 提取作業完成時,會顯示確認訊息。

    Visual Studio 2019 中 [Git 變更] 視窗中提取確認訊息的螢幕快照。

    如果在提取作業的合併部分期間發生衝突,Visual Studio 會通知您。 您可以 解決衝突,或取消合併並返回合併前狀態。

    Visual Studio 2019 中 [Git 變更] 視窗中提取衝突訊息的螢幕快照。

注意

在 Visual Studio 中,Sync執行提取,然後執行推送以同步處理本機和遠端分支。 如需同步處理的詳細資訊,請參閱在Visual Studio中使用 Git提取、提取、推送和同步處理版本控制。

下一步