git コマンドをワークツリーの外から実行すると
fatal: Not a git repository (or any of the parent directories): .git
というエラーになる。
でも一々ディレクトリまで移動するのが面倒なときもある。
複数のgitリポジトリにまたがって作業しているときとか、バッチ用のシェルスクリプト内でgitを使用するときとか。。
そういう場合は-Cでワークツリーのディレクトリを指定するとよい。
git -C /path/to/work-tree status
-Cオプションは現在の作業ディレクトリの代わりに、指定したパスでgitが実行されたかのように処理する。
複数の-Cオプションが与えられた場合、各-Cオプションに与えられた相対パスは先行の-C
-Cオプションは–git-dir と –work-treeのようなパス名を期待するコマンドについて、-Cからの相対パスとして解釈するように作用する。
例として、次のコマンドは同じ動作となる。
git --git-dir=a.git --work-tree=b -C c status
=
git --git-dir=c/a.git --work-tree=c/b status