使用 Git 進行版本控制

MarkNode 內建 Git 支援,讓你不必離開編輯器就能追蹤變更、提交,並與遠端同步。

自動偵測儲存庫

當你以專案方式開啟資料夾時,MarkNode 會檢查其中是否包含 Git 儲存庫。若找到,Git 功能會自動啟用——無須任何設定。若該資料夾不是 Git 儲存庫,Git 功能則維持隱藏。

狀態列

視窗底部的狀態列可讓你一眼掌握目前的 Git 狀態:

  • 分支名稱 — 目前簽出的分支
  • 變更數量 — 已修改、新增或刪除的檔案數。此數字可點擊:按一下即可開啟原始碼控制面板。

分支指示器會即時更新。若你從終端機或其他工具切換分支,狀態列會反映該變更,無須重新載入。至於領先/落後的提交數以及所有 Git 操作,請使用下方說明的原始碼控制面板。

原始碼控制面板

所有 Git 操作都集中在原始碼控制面板——這是一個側邊欄檢視,其設計沿襲自 VS Code 等編輯器中熟悉的原始碼控制模式。你可以從導覽列的原始碼控制圖示開啟它(該圖示位於最近檔案之後,且僅在專案為 Git 儲存庫時才會出現),或在 macOS 上按 Cmd+Shift+K、在 Windows 與 Linux 上按 Ctrl+Shift+K

此面板將一切集中於同一處,且不會有強制回應對話框擋住你的編輯器:

  • 標頭 — 目前的分支名稱,以及相對於遠端的領先/落後提交數
  • 已變更的檔案 — 分為已暫存的變更變更(未暫存),每一項會顯示檔案名稱、路徑與狀態字母
  • 內嵌操作 — 將滑鼠移到檔案上即可暫存或取消暫存;變更標頭提供全部暫存操作,已暫存的變更標頭則提供全部取消暫存操作
  • 提交區 — 訊息輸入框與提交按鈕,在你已暫存檔案並寫好訊息後即會啟用
  • 工具列提取推送重新整理操作

檔案狀態指示

檔案總管會為每個檔案的名稱上色,以標示其 Git 狀態:

狀態意義
已修改檔案有尚未提交的變更
已新增已暫存的新檔案
未追蹤尚未暫存的新檔案
已刪除已被移除的受追蹤檔案
已重新命名已被移動或重新命名的受追蹤檔案
衝突檔案有待解決的合併衝突

狀態會沿著資料夾樹狀結構向上傳遞——若資料夾內任一檔案有變更,上層資料夾的名稱也會上色(採用優先度最高的狀態)。這讓你無須展開每個目錄,就能找出專案中有變動的區域。

提交變更

提交是在原始碼控制面板中內嵌完成的——沒有另外的對話框:

  1. 將滑鼠移到各個檔案上並點擊暫存操作,以暫存你想納入的檔案;或使用區段標頭中的全部暫存
  2. 在訊息輸入框中撰寫提交訊息。
  3. 點擊提交

MarkNode 會針對你的本機儲存庫執行提交,清空訊息輸入框,並更新檔案清單與狀態列的變更數量。若提交失敗——例如被 pre-commit 掛鉤拒絕——面板會顯示錯誤,並保留你的提交訊息,方便你再試一次。

提取與推送

推送提取操作位於原始碼控制面板的工具列中。

  • 提取會從遠端擷取最新的提交,並將其合併到你目前的分支
  • 推送會將你的本機提交送到遠端

若推送被拒絕(例如,遠端有你本機所沒有的提交),你必須先提取並解決任何衝突,才能再次推送。

在 MarkNode 之外變更的檔案

若你從終端機或其他編輯器修改檔案,MarkNode 會偵測到變更並自動重新載入受影響的檔案。你不需要手動重新整理編輯器或檔案總管。

這同樣適用於 Git 操作——執行 git checkoutgit merge 或任何會修改工作樹檔案的指令,都會立即反映在編輯器中。