Git Commit生成與合入Patch指南分享
1. 生成 Patch 文件
1.1 使用 Diff 命令生成 Patch
通過 diff
命令,可以為兩個(gè)目錄生成差異補(bǔ)丁,這對(duì)于文件夾內(nèi)文件的修改非常有用,可以生成一個(gè)包含所有修改操作的補(bǔ)丁文件。
前提條件:
- 需要對(duì)比的兩個(gè)目錄的頂層路徑深度需一致。若不一致,建議使用軟鏈接來滿足此要求。
示例:
假設(shè)有兩個(gè)目錄:
- 目錄1:
/media/data2/quectel/r12/cn_kj_r12a07/ql-ol-kernel/
- 目錄2:
/tmp/sdk/cn_kj_r12a07/ql-ol-kernel/
可以通過以下命令創(chuàng)建軟鏈接并生成補(bǔ)?。?/p>
mkdir patch ln -s /media/data2/quectel/r12/cn_kj_r12a07/ql-ol-kernel/ patch/new ln -s /tmp/sdk/cn_kj_r12a07/ql-ol-kernel/ patch/old
若只修改了部分目錄(如 arch/arm/boot/dts/qcom,drivers,sound),則只需對(duì)比這些路徑:
cd patch diff -Naur old/arch/arm/boot/dts/qcom new/arch/arm/boot/dts/qcom > gpio-export.diff diff -Naur old/drivers new/drivers >> gpio-export.diff diff -Naur old/sound new/sound >> gpio-export.diff
參數(shù)說明:
-N
: 將不存在的文件視為空文件。-a
: 將所有文件視為文本文件處理。-u
: 輸出差異時(shí)附帶差異前后三行的內(nèi)容。-r
: 遞歸比較所有子目錄。
注意:
- 確保生成的補(bǔ)丁中,對(duì)比文件路徑的頂層路徑一致,以便合并時(shí)能正確找到對(duì)應(yīng)文件。
1.2 使用 Git Format-Patch 生成 Patch
在 Git 中,可以使用 git format-patch 命令生成特定 commit 的補(bǔ)丁文件。
步驟:
- 確保已提交想要生成補(bǔ)丁的 commit。
- 使用 git format-patch 命令生成補(bǔ)丁文件。
示例:
- 生成最新提交的補(bǔ)?。?/li>
git format-patch -1 HEAD
- 為特定 commit 生成補(bǔ)?。?/li>
git format-patch -1 <commit-hash>
- 為一系列 commits 生成補(bǔ)?。?/li>
git format-patch <commit-hash1>..<commit-hash2>
常用命令:
$ git format-patch HEAD^ # 生成最近的1次commit的patch $ git format-patch HEAD^^ # 生成最近的2次commit的patch $ git format-patch HEAD^^^ # 生成最近的3次commit的patch $ git format-patch <r1>..<r2> # 生成兩個(gè)commit間的修改的patch $ git format-patch -1 <r1> # 生成單個(gè)commit的patch $ git format-patch --root <r1> # 生成從根到r1提交的所有patch
2. 合入 Patch 文件
2.1 使用 Patch 命令合入
將生成的 .diff 或 .patch 文件復(fù)制到目標(biāo)目錄,然后使用 patch 命令合入。
示例:
cp gpio-export.diff /tmp/sdk/cn_kj_r12a07/ql-ol-kernel/ patch -p1 < gpio-export.diff
參數(shù)說明:
-p1
: 合入時(shí)忽略第一層目錄。例如,.diff 文件中的 new/sound/soc/soc-jack.c 路徑,查找時(shí)會(huì)忽略 new/ 前綴。-pn
: 忽略 n 層目錄。
撤銷補(bǔ)丁:
patch -p1 -RE < /media/data2/quectel/r12/patch/gpio-export.diff
參數(shù)說明:
- -R: 還原修改,即撤銷合入的補(bǔ)丁。
- -E: 刪除合入補(bǔ)丁后的空文件。
通過以上步驟,您可以輕松地生成并合入 Git commit 的 patch 文件,從而方便地進(jìn)行代碼的審查和合并。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決vs?code通過remote-ssh遠(yuǎn)程到ubuntu頻繁掉線問題
這篇文章主要介紹了vs?code通過remote-ssh遠(yuǎn)程到ubuntu頻繁掉線問題解決方法,這個(gè)解決方案只要用自己安裝的Git替換掉windows本身的Git工具,需要的朋友可以參考下2022-09-09吐血推薦珍藏的Visual Studio Code插件(推薦)
這篇文章主要介紹了吐血推薦珍藏的Visual Studio Code插件(推薦),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01IDEA升級(jí)后Git拉取和推送的標(biāo)簽消失的解決方法
本文主要介紹了IDEA升級(jí)后Git拉取和推送的標(biāo)簽消失的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06