生成和打上patch的方法

2021-07-09 13:10:12 字數 1791 閱讀 3870

**

在團隊開發的過程中,經常需要生成patch,或者打上別人提供的patch,那麼一般情況是如何操作的呢。

首先生成patch需要有兩個工程,乙個修改前的a工程,乙個修改後的b工程。

使用linux命令diff就可以生成patch了。格式如下:?

1

diff-naur path/to/a_projectpath/to/b_project> project.patch

-n 選項確保補丁檔案將正確地處理已經建立或刪除檔案的情況。

-a 將所有檔案都當作文字檔案處理。

-u 輸出每個修改前後的3行,也可以用-u5等指定輸出更多上下文。

-r 遞迴。設定後diff會將兩個不同版本源**目錄中的所有對應檔案全部都進行一次比較,包括子目錄檔案。

生成patch以後,在修改前a工程根目錄下使用patch命令打上patch。?

1

2

$cdpath/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分支?

1

git checkout patch

2. 生成patch?

1

gitformat-patch -m master

會生成乙個檔名如:0002-release-version-1.4.6.patch 的patch檔案

【合併patch】

拿到patch以後,執行下面的命令:?

1

git am 0002-release-version-1.4.6.patch

如果不想直接commit,那麼可以用下面這個命令打patch:?

1

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了。格式如下 diff naur path to a project p...

如何為Linux生成和打上patch

通過diff工具生成補丁,patch工具打上補丁.在使用diff之前,你需要保留乙份未修改過的原始碼,然後在其它地方修改原始碼的乙份拷貝.diff對比這兩份原始碼生成patch.修改過的原始碼必須保留原來的檔名,例如,如果你修改原始碼中的a.c檔案,那麼,修改後的檔案還是名為a.c,在修改之前你可以...