Git - 建立 Git 補丁檔案



Git 補丁

Git 擁有許多功能,但其中一個不太為人所知但非常有用的功能是建立和應用補丁的能力。

補丁包含檔案的兩個版本之間的差異,使開發人員能夠在儲存庫之間交換、推薦和實現更改。

本文將介紹在 Git 中使用補丁的基礎知識,例如如何建立和使用補丁,以及它們在更改管理和團隊合作方面的優勢。

Git 補丁檔案

Git 補丁檔案是一個記錄對儲存庫所做的更改的文件。它包含兩個檔案版本或一組相關檔案之間的差異列表,或稱為diff

此檔案使開發人員能夠將更改從一臺機器應用到另一臺機器,從而簡化程式碼審查和合並過程。

  • Git 補丁對於在不需要中央儲存庫的情況下共享更新特別有用。

  • 它們還可以用於在儲存庫或分支之間移動更改。

  • Git 補丁源自 Unix 的patch程式,該程式曾經用於較舊的 Unix 系統中以跟蹤檔案差異。

建立 Git 補丁檔案

使用git format-patch命令建立 Git 補丁檔案。

對於在給定分支中但不在當前分支中的提交,此工具會建立補丁檔案。

命令需要目標目錄(儲存補丁檔案的目錄)和分支的名稱。

git format-patch <branch> <options>

在當前分支上執行git format-patch而不指定其他分支將不會有任何輸出。

為特定提交建立 Git 補丁

使用git format-patch命令為單個提交建立補丁,而不是所有分支修改。

使用以下命令從最近的提交建立補丁

git format-patch HEAD~1

此命令將為當前分支中最新的提交建立一個.patch檔案。

當專注於一個或兩個特定提交而不是所有分支差異時,Git 補丁可以替代 cherry-pick。

使用git format-patch命令和-1選項以及提交 SHA 為特定提交建立補丁檔案

git format-patch -1 <commit_sha>

此命令將為指定的提交生成一個.patch檔案。

從多個提交建立 Git 補丁

要從多個提交建立補丁,請使用git format-patch命令指定提交範圍。

例如,使用以下命令為最新的四個提交建立補丁

git format-patch HEAD~4

此命令將生成四個.patch檔案,每個檔案對應於之前的四個提交中的一個。

從特定提交範圍建立 Git 補丁

使用git format-patch命令以及開始和結束提交雜湊值,從特定範圍的提交生成補丁。例如

git format-patch <start-commit-hash> <end-commit-hash>

此命令將為給定範圍內的所有提交建立.patch檔案。

應用補丁檔案

在 Git 中,使用git apply命令和補丁檔名應用補丁檔案

git apply <patch-file-name>

使用此命令將補丁檔案中的更改應用於工作目錄。

應用和提交 Git 補丁檔案

以下是應用 Git 補丁檔案併為其建立提交的步驟

1. 檢出所需的分支:

確保我們位於應應用補丁的分支上

git checkout <branch-name>

2. 應用補丁:

使用git am命令應用補丁檔案並使用與原始提交相同的郵件和元資料建立新提交

git am <patch-file-name>

3. 應用多個補丁檔案:

使用git am命令,我們可以在使用時一次應用多個補丁檔案。

有兩種基本方法可以做到這一點

使用萬用字元:如果補丁檔案位於同一目錄中並共享副檔名(例如.patch),則可以使用萬用字元一次應用所有補丁檔案

git am *.patch

此命令將應用當前目錄中所有具有.patch副檔名的補丁檔案。

分別列出檔案:如果我們希望應用特定的補丁檔案,請分別列出每個檔案

git am patch1.patch patch2.patch patch3.patch

此命令將按列出的順序應用提供的補丁檔案。

這兩種方法都會應用補丁檔案中的更改並在當前分支中建立相應的提交。

4. 解決補丁應用期間的衝突:

如果補丁中的更改無法正確整合到分支中的當前程式碼中,則在使用 Git 應用補丁時可能會發生衝突。以下是解決此類衝突的方法

5. 識別衝突:

如果 Git 在應用補丁時遇到衝突,它會提醒我們。

導致衝突的檔案將在工作目錄中指示。

6. 解決衝突:

手動解決受影響檔案中的衝突。

要修復補丁與當前程式碼之間的差異,請開啟檔案並進行必要的更改。

7. 將衝突標記為已解決:

在解決衝突後,執行以下命令來暫存已解決的檔案

git add <file-with-conflicts>

8. 繼續應用補丁:

在暫存已解決的檔案後,使用以下命令繼續補丁應用過程

git am --continue

使用此命令,指示 Git 繼續應用剩餘的補丁。

9. 中止補丁應用:

如果補丁應用過程變得過於複雜,或者我們選擇不應用補丁,可以使用以下工具停止補丁應用過程

git am --abort

此命令將停止補丁應用並恢復在此過程中所做的任何更改,將儲存庫恢復到補丁應用開始之前的狀態。

廣告