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、その他ワーキングツリーのファイルを変更するコマンドを実行すると、その結果はただちにエディタに反映されます。