11.1 Git 中的分支
在 Git 中使用分支 (branches)
是版本控制的一個
重要方面,這讓我們能在一個倉庫中平行進行多條開發線。分支
使 Git 成為一個強大的合作、實驗和管理項目不同版本的工具。
你可以將 Git 中的分支想像成 Git 為你的項目複製的資料夾。你有一個主要的項目資料夾 在你的 本地倉庫
,稱作 master
。Git 可以創建這個資料夾的副本,讓你可以嘗試新東西,而不會損壞主要的穩定代碼。這些副本資料夾被稱作分支—branches
。
分支是代碼的替代版本。假設你想在大項目中做些更改或進行實驗, 而你不完全確定結果會如何。沒 Git 的話,你會怎麼做?
你可能會將項目複製到一個新資料夾並在那裡嘗試所有更改。 如果結果讓你滿意,你就可以將其複製回主要資料夾。如果不 喜歡,直接忘掉它,甚至刪除它。
讓我們看看生活中的一個例子,比如寫一本書:
- 你有一本書稿(主分支)。
- 你決定嘗試改變結尾(創建一個新分支)。
- 你在另一個文件中寫新結尾(在新分支中工作)。
- 如果新的結尾更好,你就替換手稿中的舊結尾(合併分支)。
- 刪除新結尾的文件(刪除分支)。
11.2 創建分支
在 PyCharm 中創建分支非常簡單。
輸入分支名稱。
PyCharm 會立即在頂部菜單中顯示你當前分支的名稱:
之前是怎樣的?
之前顯示的是你第一個也是主要的分支名稱—
master
。
現在顯示的是 test
,這意味著 Git(在 PyCharm 的引導下)不僅創建了新分支,還立即切換到了它。
在當前分支 (test)
的文件 main.py
中添加一些代碼並提交。
11.3 在分支之間切換
步驟 1. 選擇分支
現在讓我們切換到我們的舊分支。點擊頂部菜單,我們看到了什麼?
別擔心—這其實很簡單:
Local
— 這是你本地 git 倉庫的分支列表;這裡有兩個:
test
master
Remote
— 這是你的遠端倉庫,位於 GitHub 伺服器上。我們將更改推送到那裡,但沒有新的分支,這很合理。遠端倉庫名為 origin,裡面只有一個分支 master
。
Recent
— 這是最近使用的分支名稱列表。此項目被添加到 PyCharm 中以便於使用和快速訪問。
名稱 origin/master
在本地倉庫名稱右側—顯示它當前同步的遠端倉庫,並且更改會推送到那裡。
步驟 2. — 將分支代碼加載到當前文件夾中
步驟 3. 檢查:
我看到顯示的分支是 (master)
和舊代碼。
11.4 合併分支
現在讓我們嘗試將兩個分支的代碼合併。
步驟 1. 首先,在專案中再添加一個文件—init.py 並寫入一些代碼。
- 創建文件 init.py
- 在裡面寫代碼 print("你好")
- 提交文件。
這是我的 master
分支中的兩個文件:
步驟 2. 合併分支
將在 test
分支中所做的更改合併到當前分支 (master)
中。
我們還將使用頂部菜單和命令 「Merge ‘test’ into ‘master’」
。
步驟 3. 檢查結果:
檢查:
- 頂部仍然顯示分支
master
- 我們有兩個文件:init.py 和 main.py
-
main.py 文件包含在
test
分支中添加的代碼。
11.5 合併時的衝突
有時合併分支時會出現衝突。
如果你在不同分支的同一文件中進行更改並嘗試合併,可能會出現衝突。
文本文件衝突
Git 是一個非常聰明的系統,它了解文件類型。如果你在它認為是文本文件的不同地方進行更改,它會將一個文件的更改正確地插入另一個文件中,就像人一樣。
二進制文件衝突
但如果你在圖像或文檔中進行更改,Git 不會嘗試將其部分合併到一個文件中,它只會讓你選擇要保留哪個版本的文件。
手動解決衝突:
如果你在文本文件中的同一位置進行更改,Git 將無法正確合併不同版本,並要求你這樣做。
這可能看起來像這樣:
你在這裡看到了什麼:
- 左側是 master 分支的 main.py 文件內容
- 右側是
test
分支的 main.py 文件內容 -
中間 PyCharm 提供給你寫最終代碼版本的地方
(你可以點擊按鈕
「>>」
和「<<」
自動插入來自其中一個文件的更改)。
我採用了 master
的版本並手動補充代碼。這就是我的結果。
11.6 變更歷史
還有一些有用又有趣的功能:你可以查看任何文件的變更歷史,點擊按鈕 Show History
。有兩個位置可能有該按鈕—找找看。
這是我查看的 main.py 文件的 變更歷史:
說明:
-
左側是特定文件的變更歷史:
- 變更越新,它就越靠上;越舊則越靠下。
- 此處還顯示分支合併歷史。
- 右側是特定提交中的變更。
GO TO FULL VERSION