Diff

如何在 file.txt.orig 和 file.txt 之間自動區分

  • May 3, 2021

目前,我正在通過設置在vim上編輯文件patchmode=.orig,然後有兩個文件:

  1. file.txt.orig<- 無需更改即可備份
  2. file.txt<- 更新文件

但是,我想生成一個差異而不必重命名.orig文件,所以patch明白它只是file.txt已更新。

理想情況下,我真的很喜歡我可以執行的工作流程

diff -u file.txt它將自動比較file.txt.origfile.txt輸出一個.diff包含

--- file.txt    2021-05-03 17:47:12.685416342 +0200
+++ file.txt    2021-05-03 17:47:30.538750593 +0200
@@ -1 +1,2 @@
foo bar
+bar baz

代替diff -u file.txt.orig file.txt

--- file.txt.orig   2021-05-03 17:47:12.685416342 +0200
+++ file.txt    2021-05-03 17:47:30.538750593 +0200
@@ -1 +1,2 @@
foo bar
+bar baz

以上確實需要我.diff每次手動編輯文件。如果.orig自動使用文件是可能的,我很樂意將 vim 更新檔模式與集成diff並擁有一個有效的更新檔,而無需額外的努力。

也許有更好的方法來解決這個問題?任何建議,將不勝感激。兩者diffgit diff都適用於我的情況。

工作流程對我有用。也許您正在通過嘗試將更新檔應用到您之前更新的文件來進行測試?

準備

echo this is original &gt;file.txt.orig
echo this is new &gt;file.txt
diff -u file.txt.orig file.txt &gt;file.diff

cat file.diff
--- file.txt.orig       2021-05-03 19:17:13.038918015 +0100
+++ file.txt    2021-05-03 19:17:21.548900027 +0100
@@ -1 +1 @@
-this is original
+this is new

創建原始文件的副本以進行修補

mkdir x
cp -p file.txt.orig x/file.txt
cd x

cat file.txt
this is original

patch &lt;../file.diff
patching file file.txt

cat file.txt
this is new

引用自:https://unix.stackexchange.com/questions/647886