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

