在**開發的過程中常常需要在原始碼的基礎上進行修改,在合併**的時候一般就會以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...