Skip to content

樹狀圖的形式展示目錄結構。它能幫你快速了解專案的層級,同時過濾掉不需要看到的雜訊。

powershell
tree -L 3 -I 'node_modules|.git|dist|build|coverage' .

將結果複製透過 ``` 包起來就可以在 md 顯示樹狀結構

指令拆解分析

組件完整名稱 / 功能詳細解釋
treeTree核心指令,將目錄內容以樹狀結構列印出來。
-L 3Level (層級)限制顯示的最大深度3 代表只顯示到第三層子目錄,防止專案太深導致輸出過長。
-I '...'Ignore (忽略)排除模式。這後面接的是一個正則表達式,用來過濾掉不想顯示的資料夾。
**`'node_modules...out'`**Pattern (匹配對象)
.Current Directory代表「當前目錄」。告訴 tree 從哪裡開始掃描。

進階常用參數(推薦搭配)

如果你想要更精確的輸出,可以嘗試加入這些參數:

  • -a: 顯示隱藏檔案(預設會跳過以 . 開頭的檔案)。
  • -d: 只顯示資料夾,不顯示檔案(讓結構更清爽)。
  • -f: 顯示完整路徑。
  • -N: 如果檔名有中文,加入此參數可防止中文變成亂碼(轉義字元)。

讓 Git 暫時忽略掉已經被追蹤(Tracked)的檔案變更

powershell
git update-index --assume-unchanged

這是在做什麼?

通常情況下,如果你修改了一個已經在 Git 倉庫裡的檔案,git status 會顯示它被更動了。但有時候我們希望:

  1. 本地修改但不提交:例如本地的設定檔、金鑰,或者為了測試而暫時修改的程式碼。
  2. 對 AI 隱藏/避免混淆:如圖中紅字所述,這可以防止某些檔案(例如 .github/ 資料夾下的 Workflows)被 AI 工具讀取或在版控中頻繁出現,維持工作區的潔淨。

指令解析

1. Bash / Zsh (適用於 macOS, Linux, WSL)

bash
git ls-files '.github/*' | while read -r file; do
    git update-index --assume-unchanged "$file"
done
  • git ls-files '.github/*':列出 .github/ 目錄下的所有檔案。
  • while read -r file; do ... done:將檔案列表一行行讀入並執行後續動作。
  • --assume-unchanged:標記這些檔案為「假設未改變」。即使你改了它們,Git 也會假裝沒看到。

2. PowerShell (適用於 Windows)

powershell
git ls-files '.github/*' | ForEach-Object {
    git update-index --assume-unchanged $_
}
  • 功能與上方完全相同,只是使用了 PowerShell 的管線(Pipeline)語法 ForEach-Object

如何恢復?

如果你之後想要讓 Git 重新追蹤這些檔案的變更,可以使用 --no-assume-unchanged

  • 恢復單一檔案git update-index --no-assume-unchanged <file_path>
  • 查看目前有哪些檔案被「隱藏」了git ls-files -v | grep "^h" (開頭為小寫 h 的就是被標記為 assume-unchanged 的檔案)

小提醒: 這只是「本地」的標記,不會影響到遠端倉庫(Remote),也不會影響其他協作者。