想像你正在寫一本书,並想試探新想法但又不想弄亂原來的。你可以為每個想法開始一個新筆記本,保持你的草稿分開。
Git,一個版本控制系統,讓軟件開發者能夠透過「分支」來進行同樣的行為。每個分支都像是一個獨立的開發路徑,讓你可以探索變動而不影響主體代碼庫。
在本文中,我將引导你使用git clone
,著重於克隆特定的分支。如果你想了解更多關於Git,我建議你參加這門Git入門課程。
讓我們先從簡短的答案開始,供那些急需的人參考。然後,我們再深入細節。
簡短答案:如何克隆特定分支
要从Git仓库克隆特定分支,可以使用以下的命令:
git clone --single-branch --branch <branch_name> <repository_url>
將 <branch_name>
替換為您想要的分支名稱,將 <repository_url>
替換為倉庫的URL。這個命令會創建指定分支的本地副本,讓您能夠立即、專注地在该分支上進行開發。
示例
在本文中,我們將使用這個倉庫。您可以使用它來在您的電腦上嘗試您學到的命令。該倉庫包含三個分支:
main
:带有兩個文字檔案的預設分支。add-new-file
:新增第三個檔案的分支。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
執行此命令後,所有分支將被複製到您的本地機器。然而,一次只可以看到一個分支的文件,稱為已驗證分支。複製倉庫後,默認分支(通常稱為main
或master
)是已被驗證的分支。
切換分支
複製完整後,我們可以透過使用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
如何與複製的分支一起工作
當者在支線工作時,有三個基本的操作必須進行:
- 通過創建當前狀態的快照來保存你目前的工作。
- 上傳你的更改,以便每個人都能訪問它們。
- 下載他人的更改並將它們與你的更改合併。
使用 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