收藏
在團隊開發的過程中,經常需要生成patch,或者打上別人提供的patch,那麼一般情況是如何操作的呢。
首先生成patch需要有兩個工程,乙個修改前的a工程,乙個修改後的b工程。
使用linux命令diff就可以生成patch了。格式如下:
diff -naur path/to/a_project path/to/b_project > project.patch
-n 選項確保補丁檔案將正確地處理已經建立或刪除檔案的情況。
-a 將所有檔案都當作文字檔案處理。
-u 輸出每個修改前後的3行,也可以用-u5等指定輸出更多上下文。
-r 遞迴。設定後diff會將兩個不同版本源**目錄中的所有對應檔案全部都進行一次比較,包括子目錄檔案。
生成patch以後,在修改前a工程根目錄下使用patch命令打上patch。
$ cd path/to/a_project
$ patch -p1 < project.patch
-p num 忽略幾層資料夾
為了解釋
-p引數,需要看看如下patch檔案片段:
--- old/modules/pcitable mon sep 27 11:03:56 1999 +++ new/modules/pcitable tue dec 19 20:05:41 2000
如果使用引數 -p0,那就表示從當前目錄找乙個叫做old的資料夾,再在它下面尋找 modules/pcitable 檔案來執行patch操作。
而如果使用引數 -p1,那就表示忽略第一層目錄(即不管old),從當前目錄尋找 modules 的資料夾,再在它下面找pcitable。
如果要取消補丁做出的更改,恢復舊版本,在a工程的根目錄下執行以下命令,a工程就會恢復成沒有打patch的樣子:
$ patch -re -p0 < project.patch
由git管理的工程處理patch的方法:
【生成patch】
分支master 上是沒修改前的,分支patch 上是修改以後的打patch的。
1. 先切換到 patch分支
git checkout patch
2. 生成patch
git format-patch -m master
會生成乙個檔名如:0002-release-version-1.4.6.patch 的patch檔案
【合併patch】
拿到patch以後,執行下面的命令:
git
am 0002-release-version-1
.4.6
.patch
如果不想直接commit,那麼可以用下面這個命令打patch:
patch
-p1< 0002-release-version-1
.4.6
.patch
然後手動commit。 生成和打上patch的方法
在團隊開發的過程中,經常需要生成patch,或者打上別人提供的patch,那麼一般情況是如何操作的呢。首先生成patch需要有兩個工程,乙個修改前的a工程,乙個修改後的b工程。使用linux命令diff就可以生成patch了。格式如下 1 diff naur path to a projectpat...
生成和打上patch的方法
在團隊開發的過程中,經常需要生成patch,或者打上別人提供的patch,那麼一般情況是如何操作的呢。首先生成patch需要有兩個工程,乙個修改前的a工程,乙個修改後的b工程。使用linux命令diff就可以生成patch了。格式如下 1 diff naur path to a projectpat...
如何為Linux生成和打上patch
通過diff工具生成補丁,patch工具打上補丁.在使用diff之前,你需要保留乙份未修改過的原始碼,然後在其它地方修改原始碼的乙份拷貝.diff對比這兩份原始碼生成patch.修改過的原始碼必須保留原來的檔名,例如,如果你修改原始碼中的a.c檔案,那麼,修改後的檔案還是名為a.c,在修改之前你可以...