Diff 和 Patch 的簡易操作使用筆記

diff + patch 很方便, 在此紀錄幾個基本用法:

  1. diff 產生 patch 檔
  2. 將 patch 寫入
  3. 移除此次 patch 的內容

Diff 和 Patch 的簡易操作使用筆記

  1. diff -Naur file1 file2 > project.patch # Diff 產生 patch, 檔案, 資料夾都可以
  2. # 或 diff -Naur dir1 dir2 > project.patch # Diff 產生 patch
  3. patch -p0 < project.patch # 將 patch 寫入
  4. patch -p0 < project.patch # 再做一次會詢問是否自動加上 -R 來移除之前 patch 寫入的(恢復回上一步的資料)
  5. patch -R -p0 < project.patch # 移除回復修改 (同上一步驟, 此次就是確定要移除上次的 project.patch)

兩個資料夾(檔案也可以使用此步驟) diff, patch 案例

  1. 先建立 dir1, dir2 (一樣內容), 修改 dir2, 然後產生 diff 後, patch 寫回 dir1.
  2. mkdir dir1
  3. touch dir1/a.txt
  4. touch dir1/b.txt
  5. mkdir dir2
  6. cp dir1/* dir2/
  7. vim dir2/a.txt # 隨便寫
  8. vim dir2/b.txt # 隨便寫
  9. # 產生 diff
  10. diff -Naur dir1 dir2 > dir.patch # Diff 產生 patch
  11. patch -p0 < dir.patch # dir1 就會寫入此 patch, 此時與 dir2 會是相同的內容
  12. patch -p0 < dir.patch # 會詢問是否要移除之前 patch 寫入的, 可以先 'n' 都否決, 用下個指令恢復
  13. patch -R -p0 < dir.patch # 移除回復修改 (同上一步驟, 此次就是確定要移除 dir.patch 的內容)

兩個檔案 diff, patch 案例

  1. diff -urN file1 file2 > f.patch
  2. patch < f.patch # 輸入要 patch 的檔案位置 (假設輸入 file1, 此時 file1 = file2)
  3. patch < f.patch # 輸入要 patch 的檔案位置 (假設輸入 file1, 此時會詢問是否要移除 f.patch 的內容)

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈Diff 和 Patch 的簡易操作使用筆記〉中有 3 則留言

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料