CodeGym /Adesua ahorow /Frontend SELF TW /在 IntelliJ IDEA 中操作 git 分支

在 IntelliJ IDEA 中操作 git 分支

Frontend SELF TW
等級 20 , 課堂 3
開放

11.1 Git 分支

在 Git 中操作分支 (branches) 是版本控制中的一個關鍵方面,允許在同一個 repository 中平行進行多條線的開發。分支使得 Git 成為一個強大的工具,能夠進行協作、實驗以及管理專案的不同版本。

Git 分支

你可以將 git 中的分支視為文件夾,git 將你的專案複製進去。你擁有主要的專案文件夾 在你的 本地 repositorymaster,而 git 可以創建這個文件夾的副本,讓你在那裡嘗試一些實驗,而不會改動原來的、運行良好的代碼。這些文件夾的副本被稱為 分支 — branches

分支是代碼的替代版本。假設你想要在一個大型專案裡改變某些東西,進行一些你不太確定的實驗。如果沒有 git,你會怎麼做?

你可能會將項目複製到一個新的文件夾,然後嘗試更改全部內容。如果結果滿意,你可以將其複製回主要文件夾。如果不滿意,你可以忘掉它,或者乾脆刪掉。

或者讓我們用生活中的例子。比如,寫一本書:

  1. 你有一本書的手稿(主要分支)。
  2. 你想嘗試改變結尾(創建一個新分支)。
  3. 你在一個單獨的文件中寫新的結尾(在新分支中操作)。
  4. 如果新的結尾更好,你將其替換到手稿中(合併分支)。
  5. 刪除包含新結尾的單獨文件(刪除分支)。

11.2 創建分支

在 IntelliJ IDEA 中創建分支非常簡單:

創建分支

輸入分支名稱:

創建分支

IntelliJ IDEA 會立即在菜單頂部顯示當前分支名稱:

創建分支

在此之前,那裡是什麼?

那裡是你的第一個也是主要的分支名稱 — master

現在那裡顯示的是 test,這意味著 Git(由 IntelliJ IDEA 管理)不僅創建了新分支,還立即切換到了它。

現在我們來在當前分支(test)的 main.html 文件中添加一些代碼並提交:

創建分支

11.3 在分支間切換

步驟 1. 選擇分支。

現在我們切換到舊分支。點擊頂部菜單,我們看到了什麼?

在分支間切換

別擔心 — 這很簡單:

Local — 是你本地 git repository 的分支列表。在這裡有兩個:

  • test
  • master

Remote — 是你的遠端 repository,位於 GitHub 伺服器上。我們將變更 push 到那裡,但新的分支還不存在,這很合理。遠端 repository 的名稱是 origin,其中只有分支 master

Recent — 這只是你最近使用過的分支名稱列表:這是 IntelliJ IDEA 為了方便和速度而添加的選項。

在本地 repository 名稱右側顯示的 origin/master 是遠端 repository 的名稱,它現在與本地同步,變更將被 push 到這裡。

步驟 2. 將分支代碼加載到當前文件夾。

在分支間切換

步驟 3. 檢查。

我這裡顯示的是分支「master」和舊的代碼:

檢查

11.4 合併分支

現在讓我們嘗試將我們兩個分支的代碼合併。

步驟 1. 首先讓我們在項目中添加另一個文件 — index.html 並寫入一些代碼:

  • 創建文件 index.html
  • 寫入代碼 <h1>Hello</h1>
  • 提交文件

這是我的 master 分支中的兩個文件的樣子:

合併分支

步驟 2. 合併分支。

將在 test 分支中所做的變更合併到我們當前的分支(master)。

為此,也使用頂部菜單中的命令「Merge ‘test’ into ‘master’」:

合併分支

步驟 3. 檢查結果。

合併分支

檢查:

  • 上方仍然顯示分支 master
  • 我們有兩個文件:index.html 和 main.html
  • main.html 文件包含在 test 分支中添加的代碼

11.5 合併衝突

有時分支合併時會出現衝突。

如果你在不同分支中的同一個文件做了更改並嘗試合併,可能會出現衝突。

文本文件衝突

Git 是非常智能的系統,它能夠理解文件類型。如果你在不同位置對它認為是文本的文件進行更改,它會將一個文件中的更改轉移到另一個文件中的適當位置(就像人類那樣)。

二進制文件衝突

但如果你修改了一些圖片或文檔,Git 不會嘗試合併它們的部分:它只會讓你選擇哪個版本的文件要保留在當前分支。

手動解決衝突

如果你在文本文件中同一位置做了不同更改,Git 無法正確合併不同版本並會讓你自己完成:

合併衝突

這是可能的樣子:

合併衝突

你在這裡看到什麼:

  • 左邊是 master 分支的 main.html 文件內容
  • 右邊是 test 分支的 main.html 文件內容
  • 中間是 IntelliJ IDEA 提供的讓你撰寫最終版本的區域(可以點擊「>>」和「<<」按鈕自動插入某個文件的更改)

我選擇了 master 的版本並手動編寫了代碼。這是我做到的結果:

合併衝突

11.6 更改歷史

還有非常有用和有趣的功能。你可以查看 任何文件 的更改歷史,點擊 Show History 按鈕。 它有兩個可能的位置。找到它們。

這是我 main.html 文件的 更改歷史 的樣子:

合併衝突

解釋:

  • 左邊你會看到特定文件的更改歷史:
    • 更改越新,越在上面,越舊 — 越在下面
    • 這裡也顯示了分支合併的歷史
  • 右邊 — 是在特定提交中所做的更改
1
問卷/小測驗
裝飾性元素,等級 20,課堂 3
未開放
裝飾性元素
裝飾性元素
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION