[Mac] 比對兩個目錄差異的幾個方法 – rsync, diff 與 Meld

本篇文章更新時間:2023/07/29
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


最近因為做一個 WordPress 專案,把 wp-content 目錄整個做 Git 版本控制,但不知道為啥沒把一些外掛的目錄給容納進去。

一開始就順手補上外掛資料後就沒事,直到最近合併版本的時後出問題,才想說要來認真解決這問題!

第一個問題就是:「那本機與線上端的版本差在哪?」
然後:「是為什麼沒有納入 Git 版控?」

查了一下「比對目錄差異」這方面的解答,分以下幾個實用解法:

  • 比對兩目錄下檔案差異(不包含內容)
    rsync -avun folder1 folder2

  • 比對兩目錄下檔案差異(包含內容,去除 DS_Store 資訊)
    diff -rq folder1 folder2 | grep -v .DS_Store

rsync 這指令真的是神來一筆!本來就是做同步用的,搭配 dry-run 模擬跑同步就會知道少哪些檔案了。

而問這個問題,很常會被視為是想知道「檔案內容」差異。所以 diff 這常見答案自然少不了它。

然後再補一個常用的

  • 計算目錄下檔案數量
    find ./folder -type f | wc -l

既然知道兩個目錄的差異檔案後,那「什麼原因導致沒有被納入」?

就是這個指令: git check-ignore -v path/to/ignored/file 反查到底是哪一條或是哪個 .gitignore 檔案阻止納入版控。

結果... 當然是自己耍蠢,太順手把常用的 .gitignore 給寫進去導致。

參考資料:

  1. 如果想安裝比對的 App,Meld fork 版本Meld 原版 都可以參考。
  2. What directory comparison tools can I use on OS X?
  3. How do you check why a file is not in the git status?

Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon