一、前言
1、介紹
Beyond Compare (簡稱:BC,下同)是一款很經典也很強大的文件/文件夾對比工具(后來也更新了同步、合並等新功能)。
在鄙人讀大學的時候,被老師推薦,一用就愛不釋手到今。市面上后來出現了很多類似的軟件,但都不如這款強大。
官網:https://www.scootersoftware.com/
2、環境
OS:MacOS
BC:v4.2.9
早期 BC 是只有 Windows 版的,后來才出了 MAC 版,喜大普奔。
3、使用背景
這次我做的項目分 A 和 B,A 項目的大部分代碼跟 B 是一樣的(有一些地方不一樣)。兩個項目因為在不同的 git 庫中,所以也不好使用 git 命令來同步。但實際開發情況是,先把 A 項目做好,測試 ok,再把 A 項目的代碼(跟 B 項目相同需求的地方)轉到 B 項目上,於是采用 BC 來進行代碼的(一次性)遷移。
二、功能 —— 文件對比
這一章只介紹文字比較。
還支持更多對比格式:
- 表(excel or csv)
- Microsoft Word
- 圖片
- 十六進制
- 注冊表
- 可執行文件(例如.exe和.dll)
- MP3
- 等等
1、對比結果的種類
相同左邊獨有右邊獨有差異行
后三種都屬於差異。
2、差異的種類
差異分為:
重要差異不重要差異
3、差異的標識
(1)差異的位置顯示(縮略圖)

- 重要差異 —— 用紅色表示
- 不重要差異 —— 用藍色表示
(2)差異的集中顯示

【最佳實踐】推薦把上下文按鈕打開:

4、不重要差異
(1)不重要差異有哪些?
- 前導空格
- 嵌入的空白
- 尾隨空白
- 字符大小寫
- 獨有行
- 比較行終止符(PC/Mac/Unix)
- 等等
重要差異就不贅述了,因為不屬於不重要差異的就是重要差異。
可以通過 規則->重要,修改不重要差異:

【最佳實踐】(上圖)默認“字符大小寫”是沒有勾選上的,但我覺得我需要這個。
(2)看不見的不重要差異 —— 空白
空白分為:
- 空格
- TAB
- 回車
- 等
① 空白在 BC 的編輯器里表示為什么?
如下圖紅框,從左到右的符號依次為 空格、TAB、回車

② 讓看不見的差異可以看見:

(3)隱藏不重要差異
原理:把不重要差異視為相同。

5、差異的修改
(1)方法一
直接點原文左側的剪頭,選擇向右覆蓋還是向左覆蓋。

(2)方法二
光標定位到具體 x 行,窗口底部會出現這一行的對比(默認為“文本細節”,可以在“視圖”里改成別的細節),可以點擊左側的兩種剪頭,來進行向右覆蓋或向左覆蓋。

【最佳實踐】用上下跳轉差異的剪頭,來快速修改:

6、忽略差異

注意 忽略差異 和 隱藏不重要差異 的區別。
7、導出差異
會話 -> 文本比較報告
可以選擇報告布局和輸出格式:

8、其他操作
(1)對齊方式
如下圖,可以強制左邊的某一行對應到右邊的某一行:

9、不足
識別不了內容一樣,但是中間換行的(但是其他的不可見符號可以,例如空格,TAB)。

三、功能 —— 文件夾對比
1、對比的對象
- 文件夾
- 文件
可以在規則里修改對比的對象。
2、對比結果的種類
文件夾和文件存在幾種情況:
- 存在且相同
- 存在但是不同(這就回到了 “第二章 文件對比” 的內容)
- 不存在
3、差異的標識
- 存在且相同 —— 灰色
- 存在但是不同 —— 紅色
- 不存在 —— 紫色
4、判斷文件(夾)是否相同
(1)操作一 —— 根據規則
規則分:
快速測試:對比文件(夾)的元信息需要打開的文件:對比文件(夾)的內容
默認規則是不打開文件,而是直接通過快速測試來對比。
這會導致明明我文件內容是一樣的,但是卻標紅表示文件不同。或者文件內容不同,但是卻顯示相同。

【最佳實踐】
- 在 快速測試 里,把 比較時間戳 關掉,開啟 比較文件名大小寫
- 在 需要打開的文件 里,把比較內容打開,然后打開 比較內容,選擇 二進制比較

這樣設置后,相同的文件會以“=”顯示,不同的文件會以“≠”顯示:

(2)操作二 —— 比較內容
在具體文件(夾)上 右鍵 -> 比較內容,可以自定義比較方式:

(3)判斷文件(夾)相同的方法
1、CRC
CRC (循環冗余校驗) 是一個文件內容的數字編碼。如果兩個文件的CRC不同,那么它們的內容肯定不同。反之如果CRC相同,那么它們的內容很可能相同(但不確定)。
2、二進制
比 CRC 更准確,但也更耗時。
5、差異的修改
(1)方法一 —— 直接操作
針對文件夾和文件:
- 復制
- 移動

(2)方法二 —— 詳細操作
只針對文件:
雙擊文件,打開 二、文件對比 一樣的界面,不贅述了。
6、注意點
這些是文件對比沒有,而文件夾對比才有的功能。
(1)刷新和完全刷新
工具欄的刷新只是刷新當前,而 “編輯”->“完全刷新” 是刷新所有。
(2)已忽略和排除
已忽略 文件對比 里也有,而 排除 僅在 文件夾對比 里有,是隸屬於 過濾 功能中的。
過濾 隸屬於 “規則” 設置里。

7、其他操作
跟 二、文件對比 一樣,不贅述了。
四、功能 —— 同步
上面的 文件夾對比,要一個一個文件(夾)的去看、去修改,太麻煩了,可以用同步,快速操作。
同步基於 文件夾對比 功能,雷同的就不贅述了。
1、入口
- 方法一:直接點主頁的文件夾同步
- 方法二:先進文件夾對比,然后選 “會話 -> 同步基文件夾”
2、對比規則
跟 二、文件夾對比 一樣。
3、同步規則
(1)針對每個文件(夾)的同步規則
獨自離開復制左邊到右邊復制右邊到左邊刪除左邊刪除右邊
(2)針對每個文件(夾)的同步標識

如上圖,箭頭為 復制,紅叉為 刪除,什么都沒有為 獨自離開。
(3)操作一 —— 預設(快速設置)

會以 BC 預設好的規則,分配給每個文件(夾)。
預設類型分兩大類:更新和鏡像。
① 更新
更新的意思為從左邊復制較新和獨有的文件/文件夾到右邊,分為這幾種預設類型:
- 更新左邊
- 更新右邊
- 更新兩者
例如更新右邊(此次我用的是這個)的具體規則為:

② 鏡像
鏡像的意思為更改右邊以便它擁有和左邊一樣的文件/文件夾,分為這幾種預設類型:
- 鏡像左邊
- 鏡像右邊
例如鏡像右邊的具體規則為:

(4)操作二 —— 高級預設(普通設置)

提供給你修改 BC 預設好的規則的權利,去分配給每個文件(夾)。
(5)操作三 —— 單獨調整(精細設置)
你可以在文件(夾)上 右鍵,針對這個文件(夾)單獨調整同步規則:

(6)不用同步
如果對某個文件(夾)不想用這些同步規則,那就雙擊它,進入 ”文件對比“ 功能,操作同上面的介紹。修改好后,再右鍵這個文件,點擊”排除“,讓他不要參與后續的同步操作。
(7)實施同步
點擊 ”立即同步“ 按鈕:

五、高級功能
1、支持壓縮文件對比
會把壓縮文件當成文件夾的形式。
2、支持在線對比
① FTP:
- FTP
- SFTP
- FTPS
【拓展】SFTP FTPS 區別:
SFTP 和 FTPS 都是為 FTP 連接加密,協議非常相似。一個是借助ssh加密,一個是借助ssl協議加密。
SFTP 用的更廣泛,因為它適合防火牆。SFTP 只需要通過防火牆打開一個端口(默認為 22)。此端口將用於所有 SFTP 通信,包括初始認證、發出的任何命令以及傳輸的任何數據。而 FTPS 通過嚴格安全的防火牆相對難以實現,因為 FTPS 使用多個網絡端口號。每次進行文件傳輸請求(get,put)或目錄列表請求時,需要打開另一個端口號。因此,必須在您的防火牆中打開一系列端口以允許 FTPS 連接,這可能是您的網絡的安全風險。
② 雲存儲:
- WebDAV
- Amazon S3
- Microsoft OneDrive
- Dropbox
- Subversion
3、跟 Git 集成
可以設置成為 Git 的 difftool 或 mergetool 的默認工具。
待寫。
4、導入 / 導出設置
當你在本機給 BC 做了很多自定義的設置后,換了新電腦想要遷移之前的設置,這個會很好用。

5、文件合並 / 文件夾合並
最高支持三路合並。
待寫
