diff + patch 很方便, 在此紀錄幾個基本用法:
- diff 產生 patch 檔
- 將 patch 寫入
- 移除此次 patch 的內容
Diff 和 Patch 的簡易操作使用筆記
- diff -Naur file1 file2 > project.patch # Diff 產生 patch, 檔案, 資料夾都可以
- # 或 diff -Naur dir1 dir2 > project.patch # Diff 產生 patch
- patch -p0 < project.patch # 將 patch 寫入
- patch -p0 < project.patch # 再做一次會詢問是否自動加上 -R 來移除之前 patch 寫入的(恢復回上一步的資料)
- patch -R -p0 < project.patch # 移除回復修改 (同上一步驟, 此次就是確定要移除上次的 project.patch)
兩個資料夾(檔案也可以使用此步驟) diff, patch 案例
- 先建立 dir1, dir2 (一樣內容), 修改 dir2, 然後產生 diff 後, patch 寫回 dir1.
- mkdir dir1
- touch dir1/a.txt
- touch dir1/b.txt
- mkdir dir2
- cp dir1/* dir2/
- vim dir2/a.txt # 隨便寫
- vim dir2/b.txt # 隨便寫
- # 產生 diff
- diff -Naur dir1 dir2 > dir.patch # Diff 產生 patch
- patch -p0 < dir.patch # dir1 就會寫入此 patch, 此時與 dir2 會是相同的內容
- patch -p0 < dir.patch # 會詢問是否要移除之前 patch 寫入的, 可以先 'n' 都否決, 用下個指令恢復
- patch -R -p0 < dir.patch # 移除回復修改 (同上一步驟, 此次就是確定要移除 dir.patch 的內容)
兩個檔案 diff, patch 案例
- diff -urN file1 file2 > f.patch
- patch < f.patch # 輸入要 patch 的檔案位置 (假設輸入 file1, 此時 file1 = file2)
- patch < f.patch # 輸入要 patch 的檔案位置 (假設輸入 file1, 此時會詢問是否要移除 f.patch 的內容)