1. 節點介紹
n8n Git 是一個核心節點,讓你在工作流程中直接操作 Git 版本控制系統,不需要登入伺服器或手動下指令。它支援 14 種操作,涵蓋從 Clone、Commit、Push 到 Branch 切換的完整 Git 工作流程,適合需要把自動化與原始碼管理或基礎設施即程式碼(IaC)整合在一起的情境。
Moksa 觀點:很多人以為 Git 節點只有開發者才用得到,但在實際場景中,它在 DevOps 自動化、設定檔版本管理、甚至內容發布流程中都大有用武之地。能夠透過 n8n 在工作流程中自動 commit、push 配置變更,讓你的基礎設施異動有完整的版本記錄,這種可稽核性在企業環境中非常重要。
2. 功能簡介
n8n Git 支援 14 種 Git 操作,對應到標準的 git CLI 指令。每個操作的核心參數都是 Repository Path (本地 Git 倉庫的路徑),部分需要認證的操作(如 Clone、Push)額外需要 Git credential。這個節點讓 n8n 能夠扮演 Git 客戶端的角色,在自動化流程中對本地倉庫執行完整的版本控制操作。
3. 常見應用場景
- 自動化設定檔版本管理: 當監控系統偵測到設定變更時,自動執行 Add → Commit → Push,將變更提交至 Git 倉庫,留下完整的異動記錄與說明。
- 定期備份與同步: 定時觸發 Pull 從遠端拉取最新的設定或文件,確保本地版本與主幹保持同步,或在部署前自動執行 Fetch → Status 確認是否有未推送的變更。
- CI/CD 前置準備: 在啟動部署流程前,自動 Clone 指定 Branch 的程式碼,或透過 Log 操作取得最近的 Commit 記錄,作為部署通知的內容。
4. n8n Git 關鍵參數說明
以下依操作類別說明各項參數,每個操作都需要填入 Repository Path (本地倉庫路徑):
Add(暫存) :新增 Paths to Add 欄位,填入要暫存的檔案或資料夾路徑(逗號分隔,支援絕對路徑和相對路徑)。對應 git add 指令。
Add Config(新增設定) :需填入 Key(設定鍵名)和 Value(設定值)。Options 中可選擇 Mode 為 Set 或 Append。對應 git config 指令。
Clone(複製倉庫) :需填入 New Repository Path(本地存放路徑)、Source Repository(來源 URL 或路徑),以及 Authentication(選擇 Authenticate 或 None,選前者需設定 Credential for Git)。
Commit(提交) :需填入 Message(提交說明)。Options 中的 Paths to Add 可指定要提交的特定路徑,留空則提交所有已暫存的檔案。
Fetch(從遠端取得) :只需填入 Repository Path。對應 git fetch。
List Config(列出設定) :只需填入 Repository Path,回傳目前的 Git 設定。
Log(提交歷史) :需填入 Repository Path、Return All(回傳全部)或 Limit(限制數量)。Options 中可填 File 路徑以查詢特定檔案的歷史記錄。
Pull(從遠端拉取) :只需填入 Repository Path。對應 git pull。
Push(推送至遠端) :需填入 Repository Path 與 Authentication(同 Clone)。Options 中可填 Target Repository 指定目標遠端位址。
Push Tags(推送標籤) :只需填入 Repository Path。對應 git push –tags。
Status(查看狀態) :只需填入 Repository Path,回傳工作目錄狀態。對應 git status。
Switch Branch(切換分支) :需填入 Repository Path 和 Branch Name(目標分支名稱)。對應 git switch。
Tag(建立標籤) :需填入 Repository Path 和 Name(標籤名稱)。對應 git tag。
User Setup(設定使用者) :只需填入 Repository Path,設定 Git 使用者身分。
5. 實戰範例
以下示範如何建立一個「偵測設定檔變更並自動 Commit 的工作流程」:
- 新增 Local File Trigger 節點,監控設定檔所在目錄(例如
/etc/myapp/config/)。 - 連接 Git 節點,操作選 Add ,Repository Path 填入
/etc/myapp/,Paths to Add 填入config/。 - 再連接一個 Git 節點,操作選 Commit ,Message 填入
Auto-commit: config changed at {{ $now }}。 - 連接第三個 Git 節點,操作選 Push ,Authentication 選 Authenticate 並設定 Git credential(填入有推送權限的 Personal Access Token)。
- 執行後,每當監控目錄的檔案發生異動,就會自動 Add → Commit → Push,在遠端倉庫留下有時間戳記的版本記錄。
6. 注意事項
- Git 節點操作的是 本地 倉庫,執行 n8n 的伺服器必須要有該倉庫的本地複本,且 Git 環境已正確安裝。
- 需要與遠端互動的操作(Clone、Push)才需要 Credential;Commit、Add、Status 等本地操作不需要。
- Commit 操作之前必須先執行 Add 操作,否則即便有修改的檔案,Commit 也不會包含任何變更。這和標準 Git 工作流程(add → commit)一致。
- Log 操作預設回傳最近的 N 筆記錄,若要查詢特定檔案的歷史,記得在 Options 中填入 File 路徑,能大幅縮小結果範圍。
- Switch Branch 操作要確保工作目錄是乾淨的(沒有未提交的修改),否則可能會遇到切換失敗,建議在切換前先執行 Status 確認狀態。
7. 參考依據
8. 常見問題 FAQ
n8n Git 節點可以操作 GitHub 或 GitLab 上的遠端倉庫嗎?
可以,但有一個前提:執行 n8n 的伺服器必須先在本地有該倉庫的複本(即先 Clone 過)。之後就可以透過 Push、Pull、Fetch 等操作與 GitHub/GitLab 的遠端倉庫同步。需要認證的操作請使用 Git credential,填入 Personal Access Token。
Commit 操作執行後顯示成功,但遠端倉庫沒有出現新的提交?
Commit 操作只是在本地倉庫建立一個新的提交紀錄,並不會自動推送到遠端。你需要在 Commit 之後再接一個 Push 操作,才能將本地的提交同步到遠端倉庫。建議的完整流程是:Add → Commit → Push。
如何透過這個節點自動打版本 Tag 並推送?
建立 Tag 需要兩個步驟:先用 Tag 操作(填入 Repository Path 和 Name,例如 v1.0.0)在本地建立標籤,再用 Push Tags 操作將所有本地標籤推送到遠端倉庫。注意 Push Tags 和一般的 Push 是不同的操作,兩者都需要執行才能讓遠端看到新標籤。