Visual Studio 如何讓使用 Git 控制版本變得輕鬆

您是否曾希望您可以回到先前運作的程式碼版本? 您是否發現自己將程式碼的複本手動儲存在不同的位置做為備份? 嗯,版本控制就是答案。

Git 是最廣泛使用的新式版本控制系統。 透過 Git,您可以追蹤一段時間所做的程式碼變更,而且可以還原為特定版本。 因此,無論您是專業開發人員,還是正在了解如何撰寫程式碼,Visual Studio 的 Git 體驗都對您非常有幫助。

提示

若要了解如何在 Visual Studio 中使用 Git 和 GitHub,請註冊 Git 學習系列

在 Visual Studio 中開始使用 Git & GitHub

使用 Visual Studio 進行版本控制有了 Git 便很容易。 我們會在您所在的位置與您見面。 您可以從遠端使用您選擇的 Git 提供者工作,例如 GitHub 或 Azure DevOps。 或者,您可以在完全沒有任何提供者的情況下在本機工作。

若要開始使用 Git 搭配 Visual Studio:

  • 如果您的 Git 存放庫裝載在 GitHub 之類的 Git 提供者上,請複製存放庫到本機電腦。

  • 或者,輕鬆地建立新的 Git 存放庫並新增您的程式碼。 如果您還沒有 Git 提供者,建議您從 GitHub 開始,因為 Visual Studio 中的 Git 體驗已針對此提供者最佳化。 GitHub 提供免費且安全的雲端程式碼儲存體,您可以在其中儲存您的程式碼,並從任何裝置隨處存取。

您不僅可以將 GitHub 和 GitHub Enterprise 帳戶新增至 Keychain,還可以像使用 Microsoft 帳戶一樣運用它們。 如果您沒有 GitHub 帳戶,請立即遵循下列步驟來建立 GitHub 帳戶,以與 Visual Studio 搭配使用

如果您不熟悉 Git,https://git-scm.com/ 網站是很好的起點。

Screenshot of the Create a Git Repository dialog box in Visual Studio.

在方案總管中檢視檔案

複製存放庫或開啟本機存放庫時,Visual Studio 會切換至 Git 內容。 方案總管會載入資料夾至 Git 存放庫根目錄,並掃描目錄樹狀目錄中是否有任何可檢視的檔案,例如 CMakeLists.txt 或副檔名為 .sln 的檔案。 如需詳細資訊,請參閱在方案總管中檢視檔案

直覺式內部迴圈工作流程

針對您日常的 Git 工作流程,Visual Studio 提供順暢的方式與 Git 互動,同時可撰寫程式碼,使得您不需要切換離開程式碼。

您可以透過分支進行多工並實驗程式碼。 如果您或您的小組會同時處理多個功能,或者如果您想要探索想法而不會影響您的工作程式碼,分支會很有幫助。 建議的 Git 工作流程會針對您處理的每個功能或修正使用新的分支。 了解如何從 Visual Studio 建立分支

建立新的分支並切換至該分支之後,您可以藉由變更現有的檔案,或新增新的檔案,然後將工作認可至存放庫來開始工作。 若要深入了解在 Visual Studio 中進行認可,並進一步了解 Git 中的檔案狀態,請參閱建立認可頁面。

Git 是分散式版本控制系統,這表示到目前為止所做的所有變更都是僅本機變更。 若要將這些變更提供給遠端存放庫,您必須將這些本機認可推送至遠端

如果您是在小組中工作,或是使用不同的機器,您也必須持續擷取並提取遠端存放庫上的新變更。 若要深入了解如何在 Visual Studio 中管理 Git 網路作業,請參閱擷取、提取、推送和同步頁面。

The Visual Studio IDE with the Git menu and the Git Changes tab in Solution Explorer showing.

存放庫管理 & 協作

但有時候,專注於 Git 存放庫更有意義。 例如,您可能需要了解小組所處理的內容,或從不同的分支複製認可,或只是清除您的傳出認可。 Visual Studio 包含功能強大的存放庫瀏覽和共同作業功能,讓您不需要使用其他工具。

為了協助您專注於 Git 存放庫,Visual Studio 具有 [Git 存放庫] 視窗,這是存放庫中所有詳細資料的彙總檢視,包括本機和遠端分支和認可歷程記錄。 您可以直接從功能表列上的 Git檢視,或從狀態列存取此視窗。

The Visual Studio IDE that highlights the Git menu and the Git Changes tab in Solution Explorer.

瀏覽和管理 Git 存放庫

若要深入了解如何使用 Visual Studio 中的 [Git 存放庫] 視窗來瀏覽和管理 Git 存放庫,請參閱下列頁面:

處理合併衝突

如果兩位開發人員修改檔案中的相同行,且 Git 無法自動知道哪一行正確時,合併期間可能發生衝突。 Git 會中止合併,並通知您處於衝突狀態。 若要深入了解,請參閱解決合併衝突頁面。

個人化您的 Git 設定

若要在存放庫層級和全域層級個人化您的 Git 設定:

  1. 移至功能表列上的 [Git]> [設定] 或 [工具]> [選項]> [原始檔控制]> [Git 全域設定]

  2. 選擇您想要的選項

    Screenshot of the Options dialog box where you can choose personalization and customization settings in Visual Studio IDE.

效能 & 生產力增強

提到 Visual Studio 內的整合式 Git 工具,我們會繼續說明運算效能和生產力增強功能。 以下是一些值得注意的更新:

  • 認可圖表。 在 Visual Studio 2022 版本 17.2 中,我們引進了認可圖表功能,以協助您減少檢視 Git 存放庫或分支歷程記錄時可能會遇到的延遲。 如需詳細資訊,請參閱 Supercharge your Git experience (英文) 部落格文章。

  • 分支切換。 此外,在 Visual Studio 2022 版本 17.2 中,我們也減少了需要重新載入方案的分支切換次數達估計 80%。 若要深入了解,請參閱 Performance Enhancements: Git Branch Switching (英文) 部落格文章。

Visual Studio 2022 版本 17.6 中還有更多功能更新,其中一些包括搜尋連結至 GitHub 問題和 Azure DevOps 工作項目的功能。 若要取得所有詳細資料,請參閱 Git Features to Enhance Productivity (英文) 部落格文章。

Git 現在是 Visual Studio 2019 的預設版本控制體驗。 自版本 16.6 起,我們一直致力於建置功能集,並根據您的意見反應來持續說明。 在版本 16.8 中,它成為每個人的預設版本控制體驗。

注意

我們也在 Visual Studio 2022 中的 Git 功能集上持續建置並反覆說明。 若要深入了解最近的功能更新,請參閱 Multi-repo support in Visual Studio (英文) 部落格文章。

深入了解 Git

Git 是最廣泛使用的新式版本控制系統,因此無論您是專業開發人員,還是您正在學習如何撰寫程式碼,Git 對您都非常有用。 如果您不熟悉 Git,https://git-scm.com/ 網站是很好的起點。 在那裡,您將找到速查表、熱門的線上書籍和 Git 基本概念影片。

從 Visual Studio 2019 中的 Git 開始

我們將逐步引導您了解如何在 Visual Studio 中使用新的 Git 體驗,但如果您想要先進行快速的導覽,請參閱下列影片:

影片長度:5.27 分鐘

有三個方式可以開始使用 Git 搭配 Visual Studio 以提高生產力:

  • 建立新的 Git 存放庫。 如果您已經有未與 Git 相關聯的程式碼,您可以從建立新 Git 存放庫開始。
  • 複製現有的 Git 存放庫。 如果您想要處理的程式碼不在您的電腦上,您可以複製任何現有的遠端存放庫。
  • 開啟現有的 Git 存放庫。 如果您的程式碼已經在您的電腦上,您可以使用 [檔案]> [開啟]> [專案/方案] (或 [資料夾]) 來開啟它,而 Visual Studio 會自動偵測其是否有已初始化的 Git 存放庫。

注意

從 Visual Studio 2019 版本 16.8 開始,我們包含完全整合的 GitHub 帳戶體驗。 您現在可以同時將 GitHub 和 GitHub Enterprise 帳戶新增至您的 Keychain。 您能夠像使用 Microsoft 帳戶一樣,新增並運用這些帳戶,這表示您可以跨 Visual Studio 更輕鬆地存取 GitHub 資源。 如需詳細資訊,請參閱在 Visual Studio 中使用 GitHub 帳戶頁面。

提示

如果您沒有 GitHub 帳戶,您可以遵循建立 GitHub 帳戶以搭配使用 Visual Studio 頁面中所述的步驟開始。

在 Visual Studio 2019 中建立新的 Git 存放庫

如果您的程式碼未與 Git 相關聯,您可以從建立新 Git 存放庫開始。 若要這樣做,請從功能表列選取 [Git]> [建立 Git 存放庫]。 然後,在 [建立 Git 存放庫] 對話方塊中,輸入您的資訊。

The Create a Git Repository dialog box in Visual Studio.

[建立 Git 存放庫] 對話方塊可讓您輕鬆地將新存放庫推送至 GitHub。 依預設,您的新存放庫是私人的,這表示您是唯一可以存取它的人員。 如果您取消勾選方塊,您的存放庫將會是公用的,這表示 GitHub 上的任何人都可以檢視它。

提示

無論您的存放庫是公用或私人,最好是讓程式碼的遠端備份安全地儲存在 GitHub 上,即使您未與小組合作也一樣。 這也會讓您的程式碼可供使用,而不論使用的電腦為何。

您可以選擇使用 [僅限本機] 選項來建立僅限本機 Git 存放庫。 或者,您可以使用 [現有的遠端] 選項,將本機專案與 Azure DevOps 上現有的空白遠端存放庫或任何其他 Git 提供者連結。

在 Visual Studio 2019 中複製現有的 Git 存放庫

Visual Studio 包含簡單的複製體驗。 如果您知道要複製的存放庫 URL,您可以在 [存放庫位置] 區段中貼上 URL,然後選擇您想要 Visual Studio 複製的目標磁碟位置。

The Clone a Git Repository dialog box in Visual Studio.

如果您不知道存放庫 URL,Visual Studio 可讓您輕鬆地瀏覽並複製現有的 GitHub 或 Azure DevOps 存放庫。

在 Visual Studio 2019 中開啟現有的本機存放庫

複製存放庫或建立存放庫之後,Visual Studio 會偵測 Git 存放庫並將它新增至 Git 功能表中 [本機存放庫] 清單。

您可以從該處快速存取和切換 Git 存放庫。

The Local Repositories option from the Git menu in Visual Studio

在 Visual Studio 2019 的方案總管中檢視檔案

複製存放庫或開啟本機存放庫時,Visual Studio 會儲存並關閉任何先前開啟的方案和專案,將您切換至該 Git 內容。 方案總管會載入資料夾至 Git 存放庫根目錄,並掃描目錄樹狀目錄中是否有任何可檢視的檔案。 這些包括 CMakeLists.txt 之類的檔案,或副檔名為 .sln 的檔案。

Visual Studio 會根據您在方案總管中載入的檔案來調整其檢視:

  • 如果您複製包含單一 .sln 檔案的存放庫,則方案總管會為您直接載入該方案。
  • 如果方案總管未偵測到存放庫中的任何 .sln 檔案,則預設會載入資料夾檢視。
  • 如果您的存放庫有多個 .sln 檔案,則方案總管會顯示可供您選擇的可用檢視清單。

您可以使用方案總管工具列中的 [切換檢視] 按鈕,在目前開啟的檢視和檢視清單之間切換。

Solution Explorer with the Switch Views button selected in Visual Studio.

如需詳細資訊,請參閱從存放庫開啟專案教學課程的在方案總管中檢視檔案一節。

Visual Studio 2019 中的 Git 變更視窗

Git 會在您工作時追蹤存放庫中的檔案變更,並將存放庫中的檔案分成三個類別。 這些變更相當於您在命令列中輸入 git status 命令時所看到的內容:

  • 未修改的檔案:這些檔案自上次認可後未變更。
  • 已修改的檔案:這些檔案自您上次認可後已變更,但您尚未暫存它們進行下一個認可。
  • 暫存的檔案:這些檔案包含將新增至下一個認可的變更。

當您工作時,Visual Studio 會在 [Git 變更] 視窗的 [變更] 區段中追蹤專案的檔案變更。

The Git Changes window in Visual Studio.

準備好暫存變更時,請按一下您要暫存的每個檔案上的 + (加號) 按鈕,或以滑鼠右鍵按一下檔案,然後選取 [暫存]。 您也可以使用 [變更] 區段頂端的全部暫存 + (加號) 按鈕,按一下即可暫存所有修改過的檔案。

當您暫存變更時,Visual Studio 會建立 [暫存變更] 區段。 只有 [暫存變更] 區段中的變更會新增至下一個認可,您可以選取 [認可暫存] 來執行此動作。 此動作的對等命令為 git commit -m "Your commit message"。 按一下 - (減號) 按鈕,也可以取消暫存變更。 此動作的對等命令為 git reset <file_path> 以取消暫存單一檔案,或 git reset <directory_path> 以取消暫存目錄中的所有檔案。

您也可以略過暫存區域,選擇不要暫存修改過的檔案。 在此情況下,Visual Studio 可讓您直接認可變更,而不需要暫存變更。 只要輸入您的認可訊息,然後選取 [全部認可]。 此動作的對等命令為 git commit -a

Visual Studio 也可讓您使用 [全部認可並推送] 和 [全部認可並同步] 捷徑,輕鬆地按一下即可認可並同步。 當您按兩下 [變更] 和 [暫存變更] 區段中的任何檔案時,可以看到與未修改檔案版本的逐行比較。

The line-by-line comparison of file versions in Visual Studio

提示

如果您連線到 Azure DevOps 存放庫,則可以使用 "#" 字元將 Azure DevOps 工作項目與認可產生關聯。 您可以透過 [Team Explorer]> [管理連線] 來連線您的 Azure DevOps 存放庫。

在 Visual Studio 2019 中選取現有的分支

Visual Studio 會在 [Git 變更] 視窗頂端的選取器中顯示最新分支。

The current branches that you can view by using the selector at the top of the Git Changes selector in Visual Studio

最新分支也可以在 Visual Studio IDE 右下角的狀態列中取得。

The current branches that you can view by using the status bar at the bottom-right corner in the Visual Studio IDE

您可以從這兩個位置切換現有的分支。

在 Visual Studio 2019 中建立新的分支

您也可以建立新的分支。 此動作的對等命令為 git checkout -b <branchname>

建立新分支就像輸入分支名稱並以現有分支為基礎一樣簡單。

The Create a New Branch dialog box in Visual Studio

您可以選擇現有的本機或遠端分支作為基礎。 [簽出分支] 核取方塊會自動將您切換至新建立的分支。 此動作的對等命令為 git checkout -b <new-branch><existing-branch>

Visual Studio 2019 中的 Git 存放庫視窗

Visual Studio 有新的 [Git 存放庫] 視窗,這是存放庫中所有詳細資料的彙總檢視,包括所有分支、遠端和認可歷程記錄。 您可以直接從功能表列上的 Git檢視,或從狀態列存取此視窗。

在 Visual Studio 2019 中管理分支

當您從 Git 功能表中選取 [管理分支] 時,您會在 [Git 存放庫] 視窗中看到分支樹狀檢視。 從左窗格,您可以使用滑鼠右鍵捷徑功能表來簽出分支、建立新的分支、合併、重訂基底、揀選等等。 當您按一下分支時,您可以在右窗格中看到其認可歷程記錄的預覽。

Visual Studio 2019 中的傳入和傳出認可

當您擷取分支時,[Git 變更] 視窗在分支下拉式清單下有一個指標,它會顯示來自遠端分支未提取的認可數目。 此指標也會顯示未推送的本機認可數目。

The Git Changes window that shows the indicator drop-down UI element in Visual Studio

該指標也會充當一個連結,帶您前往 [Git 存放庫] 視窗中該分支的認可歷程記錄。 歷程記錄的頂端現在會顯示這些傳入和傳出認可的詳細資料。 從這裡,您也可以決定提取或推送認可。

The Git Repository window that shows the commit history of a branch in Visual Studio

Visual Studio 2019 中的認可詳細資料

當您按兩下 [認可] 時,Visual Studio 會在個別的工具視窗中開啟其詳細資料。 您可以從這裡還原認可、重設認可、修改認可訊息,或在認可上建立標籤。 當您在認可中按一下變更的檔案時,Visual Studio 會開啟認可及其父系的並排 Diff 檢視。

The Commit Details dialog box in Visual Studio

處理 Visual Studio 2019 中的合併衝突

如果兩位開發人員修改檔案中的相同行,且 Git 無法自動知道哪一個正確時,合併期間可能發生衝突。 Git 會中止合併,並通知您處於衝突狀態。

Visual Studio 可讓您輕鬆地識別和解決合併衝突。 首先,[Git 存放庫] 視窗會在視窗頂端顯示金色的資訊列。

The 'Merge completed with conflicts' message in Visual Studio

[Git 變更] 視窗也會顯示「合併進行中但有衝突」訊息,並在其下方的個別區段中顯示未合併的檔案。

The 'Merge in progress with conflicts' message in Visual Studio

但是,如果您未開啟這兩個視窗,而是移至有合併衝突的檔案,則不需要搜尋下列文字:

    <<<<<<< HEAD
    =======
    >>>>>>> main

相反地,Visual Studio 會在頁面頂端顯示金色的資訊列,指出開啟的檔案發生衝突。 然後,您可以按一下連結以開啟 [合併編輯器]

Screenshot of 'File contains merge conflicts' message in Visual Studio

Visual Studio 2019 中的合併編輯器

Visual Studio 中的合併編輯器是一種三向合併工具,可顯示傳入的變更、您目前的變更,以及合併的結果。 您可以使用 [合併編輯器] 最上層的工具列,在檔案中的衝突和自動合併差異之間巡覽。

The Merge Editor in Visual Studio

您也可以使用切換來顯示/隱藏差異、顯示/隱藏文字差異,以及自訂配置。 每端上方都有核取方塊,可用來從一端或另一端取得所有變更。 但是若要取得個別變更,您可以按一下任一端衝突行左邊的核取方塊。 最後,完成衝突解決時,您可以在 [合併編輯器] 中選取 [接受合併] 按鈕。 然後,您會撰寫認可訊息並認可變更以完成解決。

在 Visual Studio 2019 中個人化您的 Git 設定

若要在存放庫層級和全域層級個人化和自訂您的 Git 設定,請移至功能表列上的 [Git]> [設定],或移至功能表列上的 [工具]> [選項]> [原始檔控制]。 然後,選擇您想要的選項

The Options dialog box where you can choose personalization and customization settings in Visual Studio IDE.

如何在 Visual Studio 2019 中使用完整的 Team Explorer 體驗

新的 Git 體驗是從 Visual Studio 2019 中版本 16.8 起的預設版本控制系統。 不過,如果您想要將其關閉,您可以關閉它。 移至 [工具]> [選項]> [環境]> [預覽功能],然後切換 [新增 Git 使用者體驗] 核取方塊,這會將您切換回適用於 Git 的 Team Explorer。

The Preview Features section of the Options dialog box in Visual Studio