Linux中patch的使用

2021-08-28 10:08:48 字數 1045 閱讀 9530

在**開發的過程中常常需要在原始碼的基礎上進行修改,在合併**的時候一般就會以patch的形式進行提交,那麼生成patch和應用patch就需要了解一下了。

所謂的patch其實就是檔案對比,在linux上使用diff命令(ref2)就可以得到patch.具體的命令為

diff -uprn test1/ test2/ > test.patch

上述命令對比了test1路徑下和test2路徑下的**差異,如果不需要對比某些內容,則在diff命令後使用--exclude-from=xx,在xx中指明哪些資訊無需對比,如git資訊等

test1/a.txt

test2/a.txt

test.patch

diff -uprn test1/a.txt test2/a.txt

+++ test2/a.txt 2018-08-01 14:31:55.000000000 +0800

@@ -1,3 +1,4 @@

+456

引數詳解:

-u 顯示有差異行的前後幾行(上下文), 預設是前後各3行, 這樣, patch中帶有更多的資訊.

-p 顯示**所在的c函式的資訊.

-r 遞迴地對比乙個目錄和它的所有子目錄(即整個目錄樹).

-n 如果某個檔案缺少了, 就當作是空檔案來對比. 如果不使用本選項, 當diff發現舊**或者新**缺少檔案時, 只簡單的提示缺少檔案. 如果使用本選項, 會將新新增的檔案全新列印出來作為新增的部分.

對比結果產生的test.patch就是我們需要的patch,假設現在需要未某乙個未經修改的原始碼打上我們的patch,如給test1路徑下的檔案打上patch

cd test1

patch -p1 < test.patch

生成的補丁中, 路徑資訊包含了你的原始碼根目錄的名稱, 但其他人的原始碼根目錄可能是其它名字, 所以, 打補丁時, 要進入你的原始碼根目錄, 並且告訴patch工具, 請忽略補丁中的路徑的第一級目錄(引數-p1).

這樣就可以將test.patch中的內容打到test1/a.txt中

ref:

Linux中patch的使用解析

在 開發的過程中常常需要在原始碼的基礎上進行修改,在合併 的時候一般就會以patch的形式進行提交,那麼生成patch和應用patch就需要了解一下了。所謂的patch其實就是檔案對比,在linux上使用diff命令 ref2 就可以得到patch.具體的命令為 diff uprn test1 te...

git 中的 patch 使用

git協同開發時,patch在某些場景下,是個不錯的選擇.patch其實就是乙個git diff記錄,那為什麼要用它呢?git那麼多協同開發的工具,難道非要用它?方法其實很多,但我這裡更推薦下面方式 先將feature fix正常提交到某個分支 git log檢視提交前的old commitid 第...

patch命令的使用

每次用到patch命令時,經常忘記,故今天在此總結一下其用法。我們知道我們經常需要將u boot或kernel打補丁。廢話不多說。下面就以例項給大家介紹一下patch的用法。我的壓縮檔案為 u boot 2010.03.tar.bz2 所以使用命令 tar jxvf u boot 2010.03.t...