輕鬆執行 Git Checkout Remote Branch [逐步操作]

請注意,Git branches對於無縫的代碼協作至關重要。在這個指南中,我們將深入探討從遠程Git存儲庫檢索代碼的過程,重點是’git checkout remote branch’命令。

Not a reader? Explore this related video tutorial!

Not seeing the video? Ensure your ad blocker is disabled.

先決條件

  • 本教程使用Windows 10上的Git SCM(源代碼管理)版本2.30,儘管它與任何支持Git的操作系統兼容。

Windows的其他潛在安裝方法包括ChocolateyGit4Win

了解遠程分支

Git存儲庫記錄並跟踪分支內一系列相關的提交。默認情況下,提交位於當前活動的分支中,通常被稱為mainmaster

A remote branch is a branch located in a remote Git repository. These remote repositories, termed as “remotes,” are the destinations your local Git repository will scout for external commit updates once set up.

使用Git的branch命令來找出可用的分支。被標記為星號(*)的分支是目前的活躍分支。以下列出的分支皆為本地分支,因為尚未取得任何遠端分支。

git branch
List of local branches shown from the git branch command.

掌握Git Checkout遠端分支

假設你有一個本地的Git倉庫,並需要與其他開發者合作。這就是Git的checkout命令可以發揮作用的地方,它讓你能夠從遠端Git倉庫的遠端分支取得最新的提交。

一旦遠端分支被設定,Git將鏡像遠端分支,而不是僅是本地分支。以下是git checkout remote <branch>命令的示例。

git checkout remote main

複製遠端Git倉庫

現在你已經有了一個現存的倉庫,是時候深入瞭解了。跟隨下列步驟將遠端倉庫複製到你機器上的本地資料夾。

1. 通常透過HTTPS URL複製遠端倉庫比使用SSH更簡單,因為這樣可以避開證書和防火牆的問題。

  • 前往GitHub上的倉庫。
  • 點擊代碼按鈕,並選擇HTTPS
  • 點擊連結旁的剪貼板圖標將URL複製到你的剪貼板。
Locating the HTTPS clone URL in GitHub.

2. 將 HTTPS URL 複製到剪貼板後,使用您偏好的命令列介面,例如 Windows Command Prompt 或 Windows Terminal

3. 導航至您希望克隆存儲庫的文件夾。本教程將使用主目錄中的 git 文件夾,如截圖所示。執行以下命令來克隆存儲庫,這將創建一個包含遠程存儲庫的子文件夾。

# GitHub git clone https://github.com/Adam-the-Automator/git-checkout-remote-branch
Cloning a remote repository to the local machine.

4. 使用命令遍歷克隆的存儲庫,cd git-checkout-remote-branch

執行以下狀態命令以確定存儲庫是否成功克隆。Git status 命令顯示本地分支和遠程分支之間的差異,幫助確定您的分支是否連接且已更新!預設的 Git 遠程分支名稱為 origin,添加到 main 遠程分支前綴。 git status

git status
Checking a repositories status.

對於大多數現代的 Git 軟體來說,main 是默認的主要分支。您可能會遇到一些舊應用程式,它們將 master 用作默認分支名稱,但這兩個名稱在功能上是相同的。本教程使用的分支名稱是 mainRemoteBranchSomeBranchAnotherBranch

什麼是 Git 遠端,如何追蹤遠端分支

克隆存儲庫會自動創建一個對遠端來源的引用,稱為遠端。這個引用用於檢查新的提交或將新的更改推送到遠端存儲庫。

A Git repository itself may have multiple remotes, but a branch can only reference a single remote.

追蹤遠端分支建立了與本地分支的關係。這種關係使您可以輕鬆地將提交推送或拉取到遠端分支到本地分支。此外,被追蹤的分支確定了本地分支相對於遠端分支的提交進度。

列出 Git 存儲庫的遠端

首先,確保您正在使用的存儲庫具有任何 Git 遠端。為此,請使用以下顯示的 git remote 命令查看存儲庫中的 Git 遠端。在本示例中,顯示了兩個遠端,originremote2

git remote
Viewing a repositories two configured remotes.

兩個額外的被追蹤的遠端存儲庫名稱分別為 originremote2,您的遠端可能不同。

要獲取有關配置的遠程庫的更多詳細信息,添加v選項以顯示完整的Git遠程庫URI。

git remote -v
Viewing verbose details about repo remotes.

您可能會想知道為什麼fetchpush使用不同的URI。一些Git工作流允許您在不同的URI上檢查存儲庫的更新,而不是將更改發送到那裡,這稱為三角工作流

查看可用的遠程分支

使用branch命令顯示您存儲庫中的所有可用分支,包括本地和遠程分支。要顯示遠程分支,請在命令後添加all選項,如下所示。

git branch --all

在下面的圖像中,顯示了本教程中使用的遠程庫origin。但是,此圖像省略了名為Remote2的遠程庫的所有分支。

Viewing all known branches in a repo (including remotes).

如果您的遠程分支未顯示在分支列表中,您必須更新可用的遠程分支列表,如下一節所述。

更新可用的遠程分支

有時,遠程庫可能會添加或修改分支。為了確保您使用的是最新的分支,必須運行git fetch命令。

fetch 命令连接到远程存储库,检索所有可用分支的列表。在运行 git fetch 命令后,查看当前跟踪的分支,以确保远程分支现在可见,如下所示。

# 检索可用的远程分支
git fetch

# 验证所有分支现在在本地 Git 存储库中可用
git branch --all

下面,分支 remotes/origin/RemoteBranch 在执行 git fetch 命令后现在在可用的远程分支列表中可见。

Using git fetch to update the list of available remote branches.

fetch 命令仅检查来自当前跟踪的远程的更新。要使 Git 从存储库中的所有远程检查更新,无论跟踪状态如何,请添加 all 参数。

git fetch --all

要从特定远程获取可用的分支,请在 git fetch 命令中包含远程名称,如下例中的 Remote2,该例子检索分支 main

# 列出本地 Git 存储库中可用的分支
git branch --all
# 从 remote2 中获取可用的分支
git fetch Remote2
# 验证 remote2 分支,main,现在可用
git branch --all
Fetching main from remote2 with the git fetch command.

每當你用git fetchgit pullgit push檢查遠端更新時,Git會與遠端分支比較提交。本地分支可以追蹤任何Git遠端分支。此外,多個本地分支可以設定為追蹤相同的遠端分支。

查看每個分支的遠端追蹤情況

要查看追蹤的遠端分支與相對應的本地分支,使用帶有vv參數的命令git branch。命令結果會按照[<remote>/<branch>]的格式顯示遠端和分支的列表,如下所示。

git branch -vv
Listing remote tracking of all local branches.

更改分支的遠端追蹤

可能需要將你的本地分支更改為追蹤不同的遠端分支。要將你當前的分支設定為特定的遠端分支,使用u參數,如下所示。

git branch -u Remote2/main
Setting what remote to track for the current branch.

檢出Git遠端分支

隨著在遠端Git倉庫創建新分支,你可能需要執行git檢出遠端分支操作。通過checkout命令執行檢出遠端倉庫分支。

如果滿足以下條件,Git將自動確定正確的遠端,下載遠端分支的本地副本並將本地副本設置為跟蹤該遠端分支。通過git branch --all命令的結果驗證未滿足以下條件。

  • A local branch with the same name does not already exist.
  • 不存在使用相同遠端分支名稱的多個遠端。

要執行git checkout遠端分支操作,請使用git checkout命令,並輸入遠端分支的名稱,如下所示。

git checkout RemoteBranch
Creating a local branch from a remote branch with git checkout.

如果您的本地存儲庫已包含具有相同名稱的本地分支,請在遠端分支之前添加b參數以指定替代的本地分支名稱。

git checkout -b AnotherBranch origin/RemoteBranch
Creating a local copy of a remote branch with an alternate local branch name.

如果您的本地存儲庫有多個具有相同分支名稱的遠端,請指定要跟蹤本地提交的遠端和分支。

git checkout --track origin/RemoteBranch
Creating a local copy of a remote branch with tracking enabled.

未來版本的Git可能更喜歡您使用git switch命令來更改和創建分支。Git switch命令僅適用於分支,而Git checkout命令具有多種能力。如果您想了解更多信息,Irshad S.寫了一篇有關這一決策背後原因的好入門文章。

將本地分支推送到遠端

在建立一個本地分支,而無相應的遠端分支進行追蹤時,您可以使用 git push 命令將該分支推送到遠端。在您喜歡的遠端上建立新分支的最直接方法是使用 u 參數。

如前所述,u 參數需要存儲庫名稱和源分支的參數。通過僅指定 HEAD 作為源分支名稱,Git 會使用當前本地分支名稱作為遠端分支的名稱,即 NewBranch

# 檢出並切換到 NewBranch
git checkout -b NewBranch
# 在原始遠端上創建 NewBranch
git push -u origin HEAD
# 確認遠端分支現在存在
git branch -vv
Pushing a local branch to an upstream remote named origin with the same name as local.

HEAD 是一個簡便的快捷方式,表示當前分支。您可以將其他分支推送到遠端並建立追蹤,使用它們的名稱而不是 HEAD

有時,當前本地分支的名稱與遠端分支的名稱不匹配。要使用不同的名稱,請在源之後指定所需的分支名稱,並用冒號連接,如下所示。

# 在原始遠端上創建當前分支為 AnotherBranch
git push -u origin HEAD:AnotherBranch
# 確認本地 NewBranch 現在作為 AnotherBranch 存在於原始遠端
git branch -vv
Pushing a local branch to an upstream remote named origin with an alternate remote branch name.

接下來的步驟和其他 Git 資源

回顧了Git的基本知識,管理遠端,以及執行git checkout遠端分支後,你現在已經裝備了豐富的知識,將有助於避免未來的挫折。在Git中檢查遠端分支的步驟和分享的最佳實踐將成為未來不可估量的資源。

如果你希望深入了解Git存儲庫管理的其他方面,以下資源強烈推薦:

  • A primer on detached heads: Discover scenarios where a detached HEAD is beneficial or inadvertent, and how to handle it.
  • Git switch:一個專門處理分支的命令,與多功能的Git checkout 不同。

Source:
https://adamtheautomator.com/git-checkout-remote-branch/