diff
[option]
... files
files一般為
最早的unix(即at&t版本的unix),使用的就是這種格式的diff。
$ diff f1 f2
4c4< a
---> b
分析:
a
表示addition,d
表示deletion,c
表示change
4c4
表示old file(f1)的第4行change為new file(f2)的第四行
<
表示刪除,>
表示增加,---
表示分割old file與new file的改動顯示
上個世紀80年代初,加州大學伯克利分校推出bsd版本的unix時,覺得diff的顯示結果太簡單,最好加入上下文,便於了解發生的變動。因此,推出了上下文格式的diff。
它的使用方法是加入c引數(代表context)。
❯ diff -c f1 f2
*** f1 2020-06-05 10:56:20.728913835 +0800
--- f2 2020-06-05 10:56:39.480910387 +0800
***************
*** 13,19 ****
a a
a! a
a a
a--- 13,19 ----
a a
a! b
a a
a
分析:
***
表示變動前的檔案,---
表示變動後的檔案。
2020-06-05 10:56:20.728913835 +0800
表示最後修改日期與修改時間,+0800
是中國的北京時間
*** 13,19 ****
表示變動前的檔案的第13行到第19行。
每行前有標誌位,如果為空,表示該行無變化;若是!
,表示該行有改動;若是-
,表示該行被刪除;若是+
,表示該行為新增。除了變動行(第4行)以外,也是上下文各顯示三行,總共顯示7行
如果兩個檔案相似度很高,那麼上下文格式的diff,將顯示大量重複的內容,很浪費空間。2023年,gnu diff率先推出了"合併格式"的diff,將f1和f2的上下文合併在一起顯示。
❯ diff -u f1 f2
--- f1 2020-06-05 10:56:20.728913835 +0800
+++ f2 2020-06-05 10:56:39.480910387 +0800
@@ -13,7 +13,7 @@
a aa-a
+b a
a a
分析:
在@@ -13,7 +13,7 @@
中,-
表示第乙個檔案(即f1),"13"表示第13行,「7"表示連續7行。合在一起,就表示下面是第乙個檔案從第1行開始的連續7行。同樣的,」+13,7"表示變動後,成為第二個檔案從第13行開始的連續7行
每一行最前面的標誌位,空表示無變動,-
表示第乙個檔案刪除的行,+
表示第二個檔案新增的行。
版本管理系統git,使用的是合併格式diff的變體。
diff --git a/f1 b/f1
index 6f8a38c..449b072 100644
--- a/f1
+++ b/f1
@@ -1,7 +1,7 @@aa
a-a+ba
aa
分析:
diff --git a/f1 b/f1
表示結果為git格式的diff
index 6f8a38c..449b072 100644
表示兩個版本的git雜湊值(暫存區的6f8a38c物件,與工作區的449b072物件進行比較),最後的六位數字是物件的模式(普通檔案,644許可權)。
---
表示變動前的版本,+++
表示變動後的版本。
在@@ -1,7 +1,7 @@
中,-
表示第乙個檔案(即f1),"1"表示第1行,「7"表示連續7行。合在一起,就表示下面是第乙個檔案從第1行開始的連續7行。同樣的,」+1,7"表示變動後,成為第二個檔案從第1行開始的連續7行
每一行最前面的標誌位,空表示無變動,-
表示第乙個檔案刪除的行,+
表示第二個檔案新增的行。
讀懂diff的輸出
今天在學習git的使用時,用到git diff去檢視git倉庫改變情況,其中關於diff的輸出,一大堆東西,不知所云,因此,查詢相關資料,總結下diff的輸出。root foundation16 learngit vim diff.txt root foundation16 learngit cat...
vue的diff演算法學習
原始碼位址 diff演算法首先要明確乙個概念就是diff的物件是虛擬dom,更新真實dom則是diff演算法的結果 constructor 這個部分的 主要是為了更好地知道在diff演算法中具體diff的屬性的含義,當然也可以更好地了解vnode例項 核心函式是patch函式 isundef判斷 是...
虛擬DOM和diff演算法的分析理解
一 dom和虛擬dom 我是文字 p div var vnode 二 虛擬dom的設計思想 虛擬dom的核心思想是 對複雜的文件dom結構,提供一種方便的工具,進行最小化地dom操作。提供一種方便的工具,使得開發效率得到保證 保證最小化的dom操作,使得執行效率得到保證 根據虛擬dom樹最初渲染成真...