Git 克隆分支:逐步教程

想像你正在寫一本书,並想試探新想法但又不想弄亂原來的。你可以為每個想法開始一個新筆記本,保持你的草稿分開。

Git,一個版本控制系統,讓軟件開發者能夠透過「分支」來進行同樣的行為。每個分支都像是一個獨立的開發路徑,讓你可以探索變動而不影響主體代碼庫。

在本文中,我將引导你使用git clone,著重於克隆特定的分支。如果你想了解更多關於Git,我建議你參加這門Git入門課程。

讓我們先從簡短的答案開始,供那些急需的人參考。然後,我們再深入細節。

簡短答案:如何克隆特定分支

要从Git仓库克隆特定分支,可以使用以下的命令:

git clone --single-branch --branch <branch_name> <repository_url>

<branch_name> 替換為您想要的分支名稱,將 <repository_url> 替換為倉庫的URL。這個命令會創建指定分支的本地副本,讓您能夠立即、專注地在该分支上進行開發。

示例

在本文中,我們將使用這個倉庫。您可以使用它來在您的電腦上嘗試您學到的命令。該倉庫包含三個分支:

  1. main:带有兩個文字檔案的預設分支。
  2. add-new-file:新增第三個檔案的分支。
  3. modify-file:修改第二個檔案的分支。

这就是我們如何克隆分支 add-new-file

git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git

什么是 git clone

默認情況下,git clone 設計上是為了將整個倉庫复制到您本地機器上的新目錄中,並複製所有分支。以下是語法:

git clone <repository_url>

要複製示例倉庫,我們可以執行以下操作:

git clone https://github.com/fran-aubry/git-clone-example.git

執行此命令後,所有分支將被複製到您的本地機器。然而,一次只可以看到一個分支的文件,稱為已驗證分支。複製倉庫後,默認分支(通常稱為mainmaster)是已被驗證的分支。

切換分支

複製完整後,我們可以透過使用git checkout命令來切換(checkout)到想要的分支。例如,要切換到modify-file分支,我們應該这样做:

git checkout modify-file

複製深度

當與git合作時,分支的更改通過使用git commit命令來保存。每個提交的commit都會創建該分支的新狀態,如有需要,您可以在後續時間恢復到這個狀態。將每個提交想像成創建一個快照,而git则会記錄所有這些快照。您可以在任何時間將分支恢復到這些快照中的任何一个。

`git clone` 命令在沒有選擇任何選項的情況下,會將每個分支的每個提交 (commit) 下載到您的本地電腦。根據專案的大小,這可能會佔用您本地存儲大量的空間。如果您知道自己不需要整個歷史記錄,您可以使用 `–depth` 選項來指定您想要克隆多少個提交(或快照)。

要克隆主分支同時只加載最新的提交,您可以使用以下命令:

git clone --depth=1 https://github.com/fran-aubry/git-clone-example.git

克隆特定分支

我們學會了如何使用git clone複製倉庫。預設情況下,這個命令会将所有內容克隆到您的本地電腦。通常,您可能只對工作在特定分支上感興趣,因此更有效率的方法是只克隆那個特定分支。這種方法節省了硬盤空間,並允許您在克隆後立即開始工作,而不需要切換分支。

在寫作書籍的類比中,考慮到被指派對一本书的第二章進行重寫。在這種情況下,您應該只克隆進行此任務的分支,因為沒有必要訪問與其他章節修訂相關的分支。

您可以指示 git 通過添加 --single-branch--branch 參數以及分支的名稱來克隆一個單一分支:

git clone --single-branch --branch <branch_name> <repository_url>

讓我們分解命令:

  • git clone: 這是用來將倉庫從遠程源头複製到您的本地電腦的基本 git 命令。
  • --single-branch: 這個選項告訴 Git 只克隆一個單一分支。如果未指定分支,則會克隆默認分支。
  • --分支 <分支名稱>:這個選項指定要複製的分支。<分支名稱>是要複製的分支的名稱。
  • <倉庫網址>:這是倉庫的網址。

 例如,要從我們的倉庫複製modify-file分支,我們可以執行以下操作:

git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git

如何與複製的分支一起工作

當者在支線工作時,有三個基本的操作必須進行:

  1. 通過創建當前狀態的快照來保存你目前的工作。
  2. 上傳你的更改,以便每個人都能訪問它們。
  3. 下載他人的更改並將它們與你的更改合併。

使用 git commit 保存你的更改。

在 Git 中,保存您的工作稱為創建一個提交。此過程會拍攝您正在處理的分支當前狀態的快照。

每次提交後,分支的狀態都會保存在您的本地機器上,讓您能夠在不同的進度階段之間導航。

要在git中提交您的更改,您使用git commit命令。然而,在提交您的更改之前,git需要知道您希望包含在提交中的哪些文件。您使用git add命令指定要保存的文件。此命令的语法如下:

git add <path_to_file>

在语法中,<path_to_file>是要提交文件的路径。例如,如果我们正在從我們的示例倉庫的modify-file分支中,並已在file2.txt中添加了一個段落,您可通过执行:

git add file2.txt

在加入你想要提交的所有文件後,你可以執行以下命令來提交:

git commit -m <message>

在此,<message> 參數應該是一個用雙引號包圍的簡短訊息,簡單描述更改內容。例如:

git commit -m "Add paragraph"

以下是提交訊息的一些慣例。它們對於確保项目中工作的每个人都具有清晰和理解至关重要:

  • 使用祈使語氣: 將你的提交訊息以祈使形式的名詞(例如 “Add,” “Fix,” “Update”)開始。例如,而不是寫 “Added new feature”,寫 “Add new feature”。
  • 精簡但具描述性: 尽量簡短,最好不超過50個字。然而,描述變動時, clarity 比什麼都重要。别寫“更改了一些東西”,而是寫“更新導航列的風格。”
  • 避免通用訊息: 避免像“修復BUG”或“進行優化”這樣模糊的訊息。要 Specific:例如“修復登錄表單驗證的BUG”或“優化文件的可讀性。”

使用 git push 上傳您的變動。

當您提交時,您会在您的本地機器上創建一個快照,記錄您的更改。为了让其他人訪問您的更改,您需要上傳它們。为此,您使用push命令。

Git的push命令的基本語法是:

git push <remote> <branch>

讓我們分解一下:

  • <遠端>: 這是你要推送更改到的遠端倉庫的名稱。當你克隆一個倉庫時,預設的遠端倉庫名稱為origin
  • <分支>: 這是你要將更改推送到的遠端倉庫的分支名稱。如果你跳過這個參數,Git將根據當前分支和遠端跟蹤配置推送更改。

以下是一些git push的常見使用情況:

  • 從當前分支推送更改:git push
  • 將特定分支的更改推送到遠端: git push origin <branch>

使用 git pull 命令下載更改

Git 讓大規模的團隊能夠同時在同一個项目中工作。當你的同事在同一分支上進行修改時,與遠端分支相比,你本地的分支可能會變得過時。

要下載別人的提交,我們使用 git pull 命令。Git 的推送命令基本語法如下:

git pull <remote> <branch>

每個參數的功能如下:

  • <遠端>:这是你要从中拉取的远程仓库的名称。默认情况下,这个仓库的名称是origin
  • <分支>:这是你希望从中拉取更改的分支名称。如果没有指定,git会使用当前分支及其上游分支。

以下是git pull的一些常见使用场景:

  • 从当前分支拉取更改:git pull
  • 从特定分支拉取更改:git pull origin <分支>

提交-拉取-推送工作流程

使用 Git 時,我建議您經常拉取更新,以確保您的本地分支保持最新。我建議您遵循以下最佳實踐:

  • 在開始工作之前,拉取您當前分支的最新更新,以確保您正在工作於最新的版本。
  • 經常提交,確保每個提交都是關注於小巧、邏輯上相關的更改。
  • 在做一些更改並創建一個提交後,再次拉取以更新您的分支,以防別人同時進行更新。
  • 最後,將您的更改推送到遠程庫。

Git 衝突

當執行git pull命令從遠程倉庫下載更改時,可能會遇到另一個提交已修改與你本地提交相同的各行。Git嘗試自動合併更改,在大多數情況下,它能成功。例如,如果對同一個文件的不同部分進行更改,Git可以無縫合併這些更改,因為提交影響不同的區段。

然而,如果你和另一個貢獻者已經編輯了同一段落,git將無法確定保留哪個版本,導致合併衝突。在這種情況下,你需要手動解決衝突,通過決定保留哪些更改來解決。

對於解決衝突的進一步指導,我建議閱讀這篇文章:Git 內如何解決合併衝突

GitHub 下載

在某些情境下,您希望建立 repository 的本機副本,以便不受修改意圖地使用。如果是公開的 repository,您不需要在您的本地電腦上安裝 Git。您可以直接通過點擊 GitHub 上的程式代碼按鈕,然後點擊下載 Zip按鈕來下載 repository,如下所示:

結論

Git 克隆功能讓您能夠將 Git repository 複製到您的本地電腦,讓您能夠使用代碼或者通過添加新功能來擴展它。當克隆 repository 時,所有分支都會被下載,這可能會消耗大量的磁碟空間。

分支是用來處理特定更改或功能的。複製特定分支可以讓您在没有下載不相關工作的情况下,對那些更改做出貢獻,因此所需的磁碟空間少得多,也能讓您的本地磁碟保持乾淨。

如果您想了解更多關於這個主題的資訊,我推薦這GitHub 和 Git 入門教程

Source:
https://www.datacamp.com/tutorial/git-clone-branch-tutorial