本篇介紹 git-format-patch 製作 patch 與匯入 patch,git 提供了兩種 patch 方案。 一種是用 git diff 產生標準 patch (.diff 檔案),另一種是 git format-patch 生成的 git 專用 patch (.patch 檔案),以下兩種都會介紹。
以下 git 製作 patch 用法介紹將分為這幾部份,
- git format-patch 製作 patch
- git 匯入 patch
- git 製作標準 diff patch
- git 匯入標準 diff patch
那我們開始吧!
git format-patch 製作 patch
git format-patch 製作最新1筆 patch,1
git format-patch -1
git format-patch 製作最新3筆 patch,1
git format-patch -3
git format-patch 製作某個 commit 到最新 commit 的 patch,1
git format-patch sha1111111111111111111111111111111111111
git format-patch 製作某個 commit 以前 1 筆的 patch,1
git format-patch -1 sha1111111111111111111111111111111111111
git format-patch 製作某個 commit 以前 3 筆的 patch,1
git format-patch -3 sha1111111111111111111111111111111111111
git format-patch 製作從 root 到最新 commit 的 patch,1
git format-patch --root
git format-patch 製作從指定 commit 到結束 commit 的 patch,1
git format-patch abcd123..abcd456
git format-patch 加上 -o
選項可以指定輸出的目錄,1
git format-patch abcd123..abcd456 -o /home/shengyu/Download/
git 匯入 patch
這邊介紹 git 匯入 patch,1
2
3
4git am --abort # 假如之前匯入失敗的話 可以使用 git am --abort 取消之前的匯入
git am 0001-xxx.patch # 匯入 patch 檔案
# or
git am -s 0001-xxx.patch # 匯入 patch 檔案並加上 sign off 簽字
git 匯入指定目錄下的 patch,1
git am /home/shengyu/Download/*
在匯入 patch 遇到衝突時,可以執行 git am --skip
跳過此次衝突,也可以執行 git am --abort
取消匯入 patch 的動作,還原到操作前的狀態。
除了用 git am 也可以用 git apply,以下是用 git apply 檢查 patch,確保 patch 檔案沒有問題,1
git apply --stat 0001-xxx.patch
git apply 檢查 patch 套用後是否會有問題,1
git apply --check 0001-xxx.patch
git apply 匯入 patch 改動但不 commit,1
git apply 0001-xxx.patch
git 製作標準 diff patch
這邊介紹 git diff 製作標準 diff patch,也就是 diff 檔,將 track 但 not stage 的改動製作 diff,1
git diff ./ > xxx-patch.diff
git diff 製作從指定 commit 到結束 commit 的 diff patch,1
git diff abcd123 abcd456 > xxx-patch.diff
git 匯入標準 diff patch
這邊介紹 git 匯入標準 diff patch(沒有包含 commit),1
2
3patch -p1 < xxx-patch.diff
# or
git apply xxx-patch.diff
以上就是 git format-patch 製作 patch 與匯入 patch 的用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!