HOME > > >

環境変数

Gitは常に bash シェル内で実行されます。
また、それがどのように動作するかを決定するために、多くのシェル環境変数を使用しています。
場合によっては、これらの環境変数が何であるか、Gitを望み通りに動かすためにどんなふうに使用できるかを知っていた方が便利です。
このリストは、Gitが参照する環境変数すべてを網羅してはいませんが、もっとも有用なものを取り上げています。

グローバルな振る舞い

Gitのコンピュータプログラムとしての一般的な動作の中には、環境変数に依存しているものがいくつかあります。

GIT_EXEC_PATH

Gitがサブプログラム(git-commit や git-diff など)を探すディレクトリを決定します。 git --exec-path で現在の設定を確認できます。

HOME

通常カスタマイズされることを考慮されてはいません(他にこの変数に依存しているものがありすぎる)が、Gitはこのディレクトリからグローバル設定ファイルを探します。
Gitを完全にポータブルな状態でインストールしたいなら、グローバル設定をすべて埋めた上で、ポータブルなGitのシェルプロファイルで HOME を上書きできます。

PREFIX

HOMEと似ていますが、こちらはシステム全体の設定です。 Gitはこのファイルを $PREFIX/etc/gitconfig から探します。

GIT_CONFIG_NOSYSTEM

設定すると、システム全体の設定ファイルを無効にします。
これは、コマンドの実行にあたってシステム全体の設定が邪魔になるが、それを変更したり削除したりするアクセス権がない場合に便利です。

GIT_PAGER

コマンドラインで複数ページにわたる出力を表示する際に使用されるプログラムを制御します。
設定されていない場合、PAGER が代わりに使用されます。

GIT_EDITOR

テキスト(例えばコミットメッセージ)を編集する必要があるときにGitから起動されるエディタです。
設定されていない場合、 EDITOR が代わりに使用されます。

リポジトリの場所

Gitは、Gitと現在のリポジトリとのインタフェース方法を決定するのに、いくつかの環境変数を使用します。

GIT_DIR

.git フォルダの場所です。
指定されていない場合、Gitはディレクトリツリーを ~ または / にたどり着くまで上っていき、各ディレクトリで .git ディレクトリを探します。

GIT_CEILING_DIRECTORIES

.git ディレクトリを探す際の動作を制御します。
読み込みが遅いディレクトリにアクセスしている場合(例えばテープドライブ上のディレクトリや、低速なネットワーク越しにアクセスしている場合)、Gitが自動で停止するのを待たずに試行を停止させたくなることもあると思います。
特に、シェルプロンプトを構成している最中にGitが呼ばれた場合はそうでしょう。

GIT_WORK_TREE

ベアリポジトリ以外のリポジトリで、ワーキングディレクトリのルートとなる場所です。
指定されていない場合、 $GIT_DIR の親ディレクトリが代わりに使用されます。

GIT_INDEX_FILE

インデックスファイルのパスです(ベアリポジトリ以外でのみ使用されます)。

GIT_OBJECT_DIRECTORY

通常 .git/objects にあるディレクトリの場所を指定するのに使用できます。

GIT_ALTERNATE_OBJECT_DIRECTORIES

GIT_OBJECT_DIRECTORY にオブジェクトがなかった場合にチェックに行く場所を指示するのに使います。
コロン区切りのリスト( /dir/one:/dir/two:… のような書式)で指定します。
大量のプロジェクトに、全く同じ内容の巨大なファイルがあるという状況で、そのファイルを大量に重複して保存したくない場合に、これが利用できます。

Pathspec

pathspec とは、Gitに何かのパスを指定する方法のことで、ワイルドカードの使用法などが含まれます。
以下の環境変数は .gitignore ファイルだけでなく、コマンドライン( git add *.c など)でも使用されます。

GIT_GLOB_PATHSPECS および GIT_NOGLOB_PATHSPECS

pathspec において、ワイルドカードのデフォルトの動作を制御します。
GIT_GLOB_PATHSPECS に1がセットされている場合、ワイルドカード文字はワイルドカードとして働きます(これがデフォルトの挙動)。 GIT_NOGLOB_PATHSPECS に1がセットされている場合、ワイルドカード文字はそれ自身にのみマッチ、つまり *.c は .c で終わる名前のファイルすべてではなく、 “*.c” という名前の ファイルにのみマッチします。
pathspec に :(glob) や :(literal) を、 :(glob)*.c のように指定することで、個々のケースに対してより優先的な設定を行うこともできます。

GIT_LITERAL_PATHSPECS

上記の振る舞いを両方とも無効にします。ワイルドカード文字は機能を停止し、オーバーライド接頭辞も無効化されます。

GIT_ICASE_PATHSPECS

すべての pathspec が大文字小文字を区別せず処理するように設定します。

コミット

Gitのコミットオブジェクトは通常、最終的に git-commit-tree によって作成されます。
このコマンドは、以下の環境変数に設定されている情報を優先的に使用します。これらの環境変数が存在しない場合にのみ、設定ファイルの値が代わりに使用されます。

GIT_AUTHOR_NAME

author フィールドに使用される、人間に読める形式の名前です。

GIT_AUTHOR_EMAIL

author フィールドで使用するメールアドレスです。

GIT_AUTHOR_DATE

author フィールドで使用するタイムスタンプです。

GIT_COMMITTER_NAME

committer フィールドで使用する人名です。

GIT_COMMITTER_EMAIL

committer フィールドで使用するメールアドレスです。

GIT_COMMITTER_DATE

committer フィールドで使用するタイムスタンプです。

EMAIL

設定値 user.email が設定されていない場合に代わりに使用されるメールアドレスです。 この環境変数自体が 設定されていない場合、Gitはシステムのユーザ名とホスト名を代わりに使用します。

ネットワーク

Git はHTTP越しのネットワーク操作に curl ライブラリを使用しています。
そのため、 GIT_CURL_VERBOSE はそのライブラリが生成するメッセージをすべて出力するようGitに指示します。
これはコマンドラインで curl -v を実行するのと似たようなものです。

GIT_SSL_NO_VERIFY

SSL証明書の検証を行わないようにGitへ指示します。
これは、GitリポジトリをHTTPS経由で利用するために自己署名証明書を使っている場合や、Gitサーバーのセットアップ中で正式な証明書のインストールが完了していない場合などに必要になります。

あるHTTP操作のデータレートが秒間 GIT_HTTP_LOW_SPEED_LIMIT バイトより低い状態が、GIT_HTTP_LOW_SPEED_TIME 秒より長く続いた場合、Gitはその操作を中断します。
これらの環境変数は設定ファイルの http.lowSpeedLimit および http.lowSpeedTime の値より優先されます。

GIT_HTTP_USER_AGENT

GitがHTTPで通信する際のuser-agent文字列を設定します。 デフォルトの値は git/2.0.0 のような内容です。

差分取得とマージ

GIT_DIFF_OPTS

これは名前の付け方に少し問題ありと言えます。 有効な値は -u <n> または --unified=<nv だけです。これは、 git diff コマンドで表示されるコンテキスト行の行数を制御します。

GIT_EXTERNAL_DIFF

設定ファイルの diff.external の値をオーバーライドします。 設定されている場合、ここで指定したプログラムが git diff の実行時に呼び出されます。

GIT_DIFF_PATH_COUNTER および GIT_DIFF_PATH_TOTAL

GIT_EXTERNAL_DIFF または diff.external で指定したプログラムの内部で使用すると便利です。
前者は、処理中の一連のファイルの中で何番目のファイルの差分を処理しているか(1から始まる数値)、後者は処理中の一連のファイルの総数です。

GIT_MERGE_VERBOSITY *

再帰的なマージ戦略の出力を制御します。 指定できる値は以下の通りです。

0 何も出力しません。例外として、エラーがあった場合はエラーメッセージを1つだけ出力します。
1 マージコンフリクトのみ表示します。
2 ファイルの変更点のみ表示します。
3 変更がなく処理をスキップしたファイルを表示します。
4 処理されたパスをすべて表示します。
5 5 以上を指定すると、上記のすべてに加えて詳細なデバッグ用の情報を表示します。

デフォルト値は2です。

デバッグ

Gitが何をしているか、 本当に 知りたいですか? Gitには、組み込みのトレースのほぼ完全なセットが備わっており、ユーザがする必要があるのは、それらをオンにすることだけです。 これらの環境変数に設定可能な値は次の通りです。

“true”、“1”、“2” – 対象のカテゴリのトレースは標準エラー出力へ書き出されます。

/ から始まる絶対パス文字列 – 対象のトレースの出力はそのファイルへ書き出されます。

GIT_TRACE

どの特定のカテゴリにも当てはまらない、一般的なトレースを制御します。
これには、エイリアスの展開や、他のサブプログラムへの処理の引き渡しなどが含まれます。

GIT_TRACE_PACK_ACCESS

パックファイルへのアクセスに関するトレースを制御します。
最初のフィールドはアクセスされているパックファイル、次のフィールドはそのファイル内でのオフセットです。

GIT_TRACE_PACKET

ネットワーク操作におけるパケットレベルのトレースを有効にします。

GIT_TRACE_PERFORMANCE

性能データのログ出力を制御します。 ログには、一つ一つのGit呼び出しにかかった時間が出力されます。

GIT_TRACE_SETUP

Gitがリポジトリや環境を操作する際に何を見ているかを表示します。

その他

GIT_SSH

指定されている場合、GitがSSHホストへ接続する際に ssh の代わりに呼び出されるプログラムです。

これは
  1. $GIT_SSH [username@]host [-p<port>]<command>

のように呼び出されます。

注意事項として、これは ssh の呼び出し方をカスタマイズする最も手軽な方法というわけではありません。
追加のコマンドラインパラメタがサポートされないので、ラッパースクリプトを書いて、
GIT_SSH がそのスクリプトを指すようにする必要があります。 その場合は単に ~/.ssh/config ファイルを使用する方が簡単でしょう。

GIT_ASKPASS

設定ファイルの core.askpass の値をオーバーライドします。
これはユーザによる認証情報の入力が必要なときに呼び出されるプログラムで、コマンドライン引数としてプロンプトのテキストを受け取り、応答を標準出力へ返すようになっている必要があります。 (このサブシステムの詳細については 認証情報の保存 を参照してください)

GIT_NAMESPACE

名前空間内の参照へのアクセス制御を行います。これは --namespace フラグと同様です。
これがもっとも便利なのは、サーバーで一つのリポジトリの複数のフォークを単一のリポジトリへ格納したいが、参照だけは別々に分けておきたい場合です。

GIT_FLUSH

Gitに非バッファI/Oを使用するように強制します。標準出力への書き出しを逐次的に行いたい場合に使用します。
1を設定すると、Gitは出力をより頻繁にフラッシュします。0を設定すると、すべての出力がバッファリングされます。
デフォルト(この環境変数が設定されていない場合)では、動作と出力モードに合わせて適切なバッファリングスキームが選択されます。

GIT_REFLOG_ACTION

reflogへ出力される説明用のテキストを指定できます。

参照サイト