patch 命令構建器
產生 patch 指令,將 diff 套用到檔案
patch 入門
## 什麼是 patch?
`patch` 會將一份 diff(由 `diff -u` 產生)套用到一組檔案。它是散布與還原原始碼變更的經典工具。
## 如何使用
1. **提供修補檔**:用 `-i` 指定(例如 `-i fix.patch`)。 2. **去除路徑層級**:用 `-p`(常用 `-p 1`)讓 diff 內的路徑符合您的目錄結構。 3. **設定選項**(可選):`-R` 反向套用、`-d` 切換到其他目錄執行。 4. **複製並執行**:將產生的指令複製到終端機執行。
常見旗標
### `-p NUM` 去除前導斜線 Diff 的檔案路徑常長得像 `a/src/app.c` 與 `b/src/app.c`。用 `-p 1` 去除前綴的 `a/` / `b/`,讓 `patch` 對 `src/app.c` 套用。
### `-i FILE` 從檔案讀取修補檔 套用存於磁碟的修補檔,而非從標準輸入讀取。
### `-d DIR` 切換目錄 等同於先 `cd` 到 `DIR` 再執行 `patch`——從儲存庫根目錄套用修補檔時很方便。
### `-R` 反向 將修補檔反向套用,**還原**先前已套用的變更。等同於 `git apply -R`。
### 驗證 使用 `--dry-run`(本產生器未提供此選項)可在不修改檔案的情況下測試:
``` patch -p 1 --dry-run -i fix.patch ```
▶-p 1 是什麼意思?
它會從修補檔中每個檔名去除一層前導路徑。來自 `git` 的統一格式 diff 通常會用 `a/` 與 `b/` 作為路徑前綴,因此 `-p 1` 會將其移除。`-p0` 保留原路徑;`-p2` 則去除兩層。
▶如何復原已套用的修補檔?
用相同的指令加上 `-R` 重新執行:`patch -R -p 1 -i fix.patch`。這會反向套用變更,還原原始檔案。
如果这个工具对你有帮助,请考虑请我喝杯咖啡。
請幫我買杯咖啡吧。