English ▾ トピック ▾ 最新バージョン ▾ git は 2.50.0 で最終更新されました

名前

git - 愚かなコンテンツトラッカー

概要

git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
    [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
    [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-lazy-fetch]
    [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>]
    [--work-tree=<path>] [--namespace=<name>] [--config-env=<name>=<envvar>]
    <command> [<args>]

説明

Git は、高速でスケーラブルな分散型リビジョン管理システムであり、高レベルの操作と内部への完全なアクセスを提供する、非常に豊富なコマンドセットを備えています。

まず gittutorial[7] を参照し、次に便利な最小限のコマンドセットについては giteveryday[7] を参照してください。Git User’s Manual は、より詳細な導入です。

基本的な概念を習得したら、このページに戻って Git が提供するコマンドについて学習できます。個々の Git コマンドについては、「git help command」で詳細を確認できます。gitcli[7] のマニュアルページでは、コマンドラインコマンドの構文の概要が説明されています。

最新の Git ドキュメントの書式設定されハイパーリンクされたコピーは、https://git.github.io/htmldocs/git.html または https://git.dokyumento.jp/docs で閲覧できます。

オプション

-v
--version

git プログラムの基になった Git スイートのバージョンを表示します。

このオプションは内部的に git version ... に変換され、git-version[1] コマンドと同じオプションを受け入れます。--help も指定された場合、--version よりも優先されます。

-h
--help

概要と最も一般的に使用されるコマンドのリストを表示します。--all または -a オプションが指定された場合、利用可能なすべてのコマンドが表示されます。Git コマンドが指定された場合、そのコマンドのマニュアルページが表示されます。

マニュアルページの表示方法を制御するための他のオプションも利用できます。git --help ... は内部的に git help ... に変換されるため、詳細については git-help[1] を参照してください。

-C <path>

現在の作業ディレクトリの代わりに <path> で git が開始されたかのように実行します。複数の -C オプションが指定された場合、後続の各非絶対 -C <path> は先行する -C <path> に対して相対的に解釈されます。<path> が存在しても空の場合、例えば -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
-c <name>=<value>

設定パラメータをコマンドに渡します。指定された値は設定ファイルからの値を上書きします。 は、git config によってリストされたものと同じ形式(ドットで区切られたサブキー)で期待されます。

git -c foo.bar ...= を省略することが許可されており、foo.bar をブール値の true に設定します(設定ファイルで [foo]bar が行うのと同様)。等号を含みつつ空の値(git -c foo.bar= ... のように)の場合、foo.bar を空文字列に設定し、git config --type=bool はこれを false に変換します。

--config-env=<name>=<envvar>

-c <name>=<value> と同様に、設定変数 <name> に値を指定します。ここで、<envvar> は、値を取得する環境変数の名前です。-c とは異なり、値を直接空文字列に設定するショートカットはありません。代わりに、環境変数自体を空文字列に設定する必要があります。環境変数 <envvar> が環境に存在しない場合、エラーとなります。<envvar> は、<name> に含まれる等号との曖昧さを避けるため、等号を含むことはできません。

これは、Git に一時的な設定オプションを渡したい場合で、他のプロセスがコマンドライン(例: /proc/self/cmdline)を読み取れるが、環境(例: /proc/self/environ)は読み取れないオペレーティングシステムで、これを行う場合に役立ちます。この動作は Linux ではデフォルトですが、お使いのシステムではそうではない可能性があります。

これは、機密情報が値の一部である http.extraHeader などの変数にはセキュリティを追加する可能性がありますが、機密情報がキーの一部となる url.<base>.insteadOf などには追加されないことに注意してください。

--exec-path[=<path>]

コア Git プログラムがインストールされているパス。これは GIT_EXEC_PATH 環境変数を設定することでも制御できます。パスが指定されていない場合、git は現在の設定を出力してから終了します。

--html-path

Git の HTML ドキュメントがインストールされているパスを末尾のスラッシュなしで表示し、終了します。

--man-path

このバージョンの Git の man ページの manpath (man(1) を参照) を表示して終了します。

--info-path

このバージョンの Git を文書化する Info ファイルがインストールされているパスを表示して終了します。

-p
--paginate

標準出力がターミナルである場合、すべての出力を less (または設定されている場合は $PAGER) にパイプします。これは pager.<cmd> 設定オプション (以下の「設定メカニズム」セクションを参照) を上書きします。

-P
--no-pager

Git の出力をページャーにパイプしません。

--git-dir=<path>

リポジトリ(".git" ディレクトリ)へのパスを設定します。これは GIT_DIR 環境変数を設定することでも制御できます。絶対パスまたは現在の作業ディレクトリへの相対パスのいずれかです。

このオプション(または GIT_DIR 環境変数)を使用して「.git」ディレクトリの場所を指定すると、「.git」サブディレクトリを持つディレクトリ(リポジトリと作業ツリーのトップレベルが検出される方法)を検索しようとするリポジトリ検出が無効になり、作業ツリーのトップレベルにいることを Git に伝えます。作業ツリーのトップレベルディレクトリにいない場合は、--work-tree=<path> オプション(または GIT_WORK_TREE 環境変数)を使用して、作業ツリーのトップレベルがどこにあるかを Git に伝える必要があります。

単に Git を <path> で起動したかのように実行したい場合は、git -C <path> を使用してください。

--work-tree=<path>

作業ツリーへのパスを設定します。これは絶対パスでも、現在の作業ディレクトリへの相対パスでも構いません。これは GIT_WORK_TREE 環境変数と core.worktree 設定変数(詳細は git-config[1] の core.worktree を参照)を設定することでも制御できます。

--namespace=<path>

Git 名前空間を設定します。詳細は gitnamespaces[7] を参照してください。GIT_NAMESPACE 環境変数を設定するのと同等です。

--bare

リポジトリをベアリポジトリとして扱います。GIT_DIR 環境変数が設定されていない場合、現在の作業ディレクトリに設定されます。

--no-replace-objects

Git オブジェクトを置換するのに置換リファレンスを使用しません。これは、GIT_NO_REPLACE_OBJECTS 環境変数を任意の値でエクスポートするのと同等です。詳細については git-replace[1] を参照してください。

--no-lazy-fetch

プロミサーリモートから不足しているオブジェクトをオンデマンドでフェッチしません。git cat-file -e <object> と一緒に使用して、オブジェクトがローカルで利用可能かどうかを確認するのに便利です。これは GIT_NO_LAZY_FETCH 環境変数を 1 に設定するのと同等です。

--no-optional-locks

ロックを必要とするオプションの操作は実行しません。これは、GIT_OPTIONAL_LOCKS0 に設定するのと同等です。

--no-advice

すべての助言ヒントの表示を無効にします。

--literal-pathspecs

パススペックをリテラルとして扱います(つまり、グロブ化なし、パススペックマジックなし)。これは GIT_LITERAL_PATHSPECS 環境変数を 1 に設定するのと同等です。

--glob-pathspecs

すべてのパススペックに「glob」マジックを追加します。これは GIT_GLOB_PATHSPECS 環境変数を 1 に設定するのと同等です。個々のパススペックでのグロブ化の無効化は、パススペックマジック「:(literal)」を使用して行うことができます。

--noglob-pathspecs

すべてのパススペックに「literal」マジックを追加します。これは GIT_NOGLOB_PATHSPECS 環境変数を 1 に設定するのと同等です。個々のパススペックでのグロブ化の有効化は、パススペックマジック「:(glob)」を使用して行うことができます。

--icase-pathspecs

すべてのパススペックに「icase」マジックを追加します。これは GIT_ICASE_PATHSPECS 環境変数を 1 に設定するのと同等です。

--list-cmds=<group>[,<group>…​]

グループ別にコマンドをリスト表示します。これは内部/実験的なオプションであり、将来変更または削除される可能性があります。サポートされているグループは次のとおりです: builtins, parseopt (parse-options を使用する組み込みコマンド), main (libexec ディレクトリ内のすべてのコマンド), others ($PATH 内の git- プレフィックスを持つ他のすべてのコマンド), list-<category> (command-list.txt のカテゴリを参照), nohelpers (ヘルパーコマンドを除外), alias, config (config 変数 completion.commands からコマンドリストを取得)

--attr-source=<tree-ish>

作業ツリーの代わりに から gitattributes を読み込みます。詳細は gitattributes[5] を参照してください。これは GIT_ATTR_SOURCE 環境変数を設定するのと同等です。

Git コマンド

Git は、高レベルの(「ポーセリン」)コマンドと低レベルの(「プラミング」)コマンドに分かれています。

高レベルコマンド(ポーセリン)

ポーセリンコマンドは、メインコマンドと補助ユーザーユーティリティに分けられます。

主なポーセリンコマンド

git-add[1]

ファイルのコンテンツをインデックスに追加する

git-am[1]

メールボックスから一連のパッチを適用する

git-archive[1]

指定されたツリーからファイルのアーカイブを作成する

git-backfill[1]

部分クローン内の不足オブジェクトをダウンロードする

git-bisect[1]

バイナリ検索を使用してバグが導入されたコミットを見つける

git-branch[1]

ブランチのリスト表示、作成、または削除

git-bundle[1]

アーカイブによるオブジェクトと参照の移動

git-checkout[1]

ブランチを切り替えるか、作業ツリーファイルを復元する

git-cherry-pick[1]

既存のコミットによって導入された変更を適用する

git-citool[1]

git-commit のグラフィカルな代替

git-clean[1]

作業ツリーから追跡されていないファイルを削除する

git-clone[1]

リポジトリを新しいディレクトリにクローンする

git-commit[1]

リポジトリへの変更を記録する

git-describe[1]

利用可能な参照に基づいてオブジェクトに人間が読める名前を付ける

git-diff[1]

コミット間、コミットと作業ツリー間の変更などを表示

git-fetch[1]

別のリポジトリからオブジェクトと参照をダウンロードする

git-format-patch[1]

Eメール提出用のパッチを準備する

git-gc[1]

不要なファイルをクリーンアップし、ローカルリポジトリを最適化する

git-grep[1]

パターンに一致する行を表示する

git-gui[1]

Git の移植可能なグラフィカルインターフェース

git-init[1]

空の Git リポジトリを作成するか、既存のリポジトリを再初期化する

git-log[1]

コミットログを表示する

git-maintenance[1]

Git リポジトリデータを最適化するためのタスクを実行する

git-merge[1]

2つ以上の開発履歴を結合する

git-mv[1]

ファイル、ディレクトリ、またはシンボリックリンクの名前を変更または移動する

git-notes[1]

オブジェクトのノートを追加または検査する

git-pull[1]

別のリポジトリまたはローカルブランチからフェッチして統合する

git-push[1]

関連するオブジェクトとともにリモート参照を更新する

git-range-diff[1]

2つのコミット範囲(例:ブランチの2つのバージョン)を比較する

git-rebase[1]

別のベースの先端にコミットを再適用する

git-reset[1]

現在のHEADを指定された状態にリセットする

git-restore[1]

作業ツリーファイルを復元する

git-revert[1]

既存のコミットをいくつか取り消す

git-rm[1]

作業ツリーおよびインデックスからファイルを削除する

git-shortlog[1]

git log の出力を要約する

git-show[1]

様々な種類のオブジェクトを表示する

git-sparse-checkout[1]

作業ツリーを追跡ファイルのサブセットに縮小する

git-stash[1]

ダーティな作業ディレクトリの変更を一時的に保存する

git-status[1]

作業ツリーの状態を表示する

git-submodule[1]

サブモジュールの初期化、更新、または検査

git-switch[1]

ブランチを切り替える

git-tag[1]

GPG で署名されたタグオブジェクトを作成、リスト表示、削除、または検証する

git-worktree[1]

複数の作業ツリーを管理する

gitk[1]

Git リポジトリブラウザ

scalar[1]

大規模な Git リポジトリを管理するためのツール

補助コマンド

操作者

git-config[1]

リポジトリまたはグローバルオプションを取得および設定する

git-fast-export[1]

Git データエクスポート

git-fast-import[1]

高速 Git データインポーターのバックエンド

git-filter-branch[1]

ブランチを書き換える

git-mergetool[1]

マージコンフリクトを解決するためにマージコンフリクト解決ツールを実行する

git-pack-refs[1]

効率的なリポジトリアクセスのためのヘッドとタグのパック

git-prune[1]

オブジェクトデータベースから到達不能なオブジェクトをすべて削除する

git-reflog[1]

参照ログ情報を管理する

git-refs[1]

refs への低レベルアクセス

git-remote[1]

追跡リポジトリのセットを管理する

git-repack[1]

リポジトリ内のアンパックされたオブジェクトをパックする

git-replace[1]

オブジェクトを置換する参照を作成、リスト表示、削除する

尋問者

git-annotate[1]

コミット情報でファイルの行に注釈を付ける

git-blame[1]

ファイルの各行を最後に修正したリビジョンと作者を表示する

git-bugreport[1]

ユーザーがバグレポートを提出するための情報を収集する

git-count-objects[1]

展開されたオブジェクトの数とディスク消費量をカウントする

git-diagnose[1]

診断情報のzipアーカイブを生成する

git-difftool[1]

一般的な diff ツールを使用して変更を表示する

git-fsck[1]

データベース内のオブジェクトの接続性と有効性を検証する

git-help[1]

Gitに関するヘルプ情報を表示する

git-instaweb[1]

gitweb で作業リポジトリを瞬時に閲覧する

git-merge-tree[1]

インデックスや作業ツリーに触れることなくマージを実行する

git-rerere[1]

衝突したマージの記録された解決策を再利用する

git-show-branch[1]

ブランチとそのコミットを表示する

git-verify-commit[1]

コミットのGPG署名をチェックする

git-verify-tag[1]

タグのGPG署名をチェックする

git-version[1]

Gitのバージョン情報を表示する

git-whatchanged[1]

各コミットが導入する差分とともにログを表示する

gitweb[1]

Git ウェブインターフェース(Git リポジトリのウェブフロントエンド)

他のユーザーとのやり取り

これらのコマンドは、外部 SCM や、電子メールによるパッチを介して他のユーザーとやり取りするためのものです。

git-archimport[1]

GNU Arch リポジトリを Git にインポートする

git-cvsexportcommit[1]

単一のコミットを CVS チェックアウトにエクスポートする

git-cvsimport[1]

他の SCM からデータを救出する(人々が嫌いなSCM)

git-cvsserver[1]

Git の CVS サーバーエミュレーター

git-imap-send[1]

標準入力から IMAP フォルダーにパッチのコレクションを送信する

git-p4[1]

Perforce リポジトリからのインポートと Perforce リポジトリへの提出

git-quiltimport[1]

現在のブランチにキルトパッチセットを適用する

git-request-pull[1]

保留中の変更の要約を生成する

git-send-email[1]

パッチのコレクションをメールとして送信する

git-svn[1]

Subversion リポジトリと Git 間の双方向操作

リセット、復元、および元に戻す

類似した名前を持つ3つのコマンドがあります: git reset, git restore, および git revert.

  • git-revert[1] は、他のコミットによって行われた変更を元に戻す新しいコミットを作成することです。

  • git-restore[1] は、インデックスまたは別のコミットから作業ツリー内のファイルを復元することです。このコマンドはブランチを更新しません。このコマンドは、別のコミットからインデックス内のファイルを復元するためにも使用できます。

  • git-reset[1] は、ブランチからコミットを追加または削除するためにチップを移動することで、ブランチを更新することです。この操作はコミット履歴を変更します。

    git reset は、git restore と重複するインデックスの復元にも使用できます。

低レベルコマンド(プラミング)

Git には独自のポーセリン層が含まれていますが、その低レベルコマンドは代替ポーセリンの開発をサポートするのに十分です。このようなポーセリンの開発者は、まず git-update-index[1]git-read-tree[1] について読むことから始めるかもしれません。

これらの低レベルコマンドのインターフェース(入力、出力、オプションセット、セマンティクス)は、主にスクリプトでの使用を目的としているため、ポーセリンレベルのコマンドよりもはるかに安定していることを意図しています。一方、ポーセリンコマンドのインターフェースは、エンドユーザーエクスペリエンスを向上させるために変更される可能性があります。

以下の説明では、低レベルコマンドを、オブジェクト(リポジトリ、インデックス、作業ツリー内)を操作するコマンド、オブジェクトを尋問および比較するコマンド、およびリポジトリ間でオブジェクトと参照を移動するコマンドに分類します。

操作コマンド

git-apply[1]

ファイルおよび/またはインデックスにパッチを適用する

git-checkout-index[1]

インデックスから作業ツリーにファイルをコピーする

git-commit-graph[1]

Git コミットグラフファイルを書き込み、検証する

git-commit-tree[1]

新しいコミットオブジェクトを作成する

git-hash-object[1]

オブジェクトIDを計算し、必要に応じてファイルからオブジェクトを作成する

git-index-pack[1]

既存のパック済みアーカイブのパックインデックスファイルを構築する

git-merge-file[1]

3方向ファイルマージを実行する

git-merge-index[1]

マージが必要なファイルの合併を実行する

git-mktag[1]

追加検証付きのタグオブジェクトを作成する

git-mktree[1]

ls-tree 形式のテキストからツリーオブジェクトを構築する

git-multi-pack-index[1]

マルチパックインデックスを書き込み、検証する

git-pack-objects[1]

オブジェクトのパックされたアーカイブを作成する

git-prune-packed[1]

パックファイルにすでに存在する余分なオブジェクトを削除する

git-read-tree[1]

ツリー情報をインデックスに読み込む

git-replay[1]

実験的:新しいベースでコミットを再生します。ベアリポジトリでも動作します。

git-symbolic-ref[1]

シンボリック参照の読み込み、変更、削除

git-unpack-objects[1]

パックされたアーカイブからオブジェクトを展開する

git-update-index[1]

作業ツリー内のファイル内容をインデックスに登録する

git-update-ref[1]

参照に保存されているオブジェクト名を安全に更新する

git-write-tree[1]

現在のインデックスからツリーオブジェクトを作成する

尋問コマンド

git-cat-file[1]

リポジトリオブジェクトのコンテンツまたは詳細を提供する

git-cherry[1]

まだアップストリームに適用されていないコミットを見つける

git-diff-files[1]

作業ツリーとインデックスのファイルを比較する

git-diff-index[1]

ツリーを作業ツリーまたはインデックスと比較する

git-diff-pairs[1]

提供されたブロブペアのコンテンツとモードを比較する

git-diff-tree[1]

2つのツリーオブジェクトを介して見つかったブロブのコンテンツとモードを比較する

git-for-each-ref[1]

各参照に関する情報を出力する

git-for-each-repo[1]

リポジトリのリストで Git コマンドを実行する

git-get-tar-commit-id[1]

git-archive を使用して作成されたアーカイブからコミットIDを抽出する

git-ls-files[1]

インデックスおよび作業ツリー内のファイルに関する情報を表示する

git-ls-remote[1]

リモートリポジトリ内の参照をリスト表示する

git-ls-tree[1]

ツリーオブジェクトのコンテンツをリスト表示する

git-merge-base[1]

マージのための可能な限り良好な共通の祖先を見つける

git-name-rev[1]

指定されたリビジョンに対するシンボリック名を見つける

git-pack-redundant[1]

冗長なパックファイルを見つける

git-rev-list[1]

コミットオブジェクトを逆時系列順にリストする

git-rev-parse[1]

パラメーターを選択して調整する

git-show-index[1]

パックされたアーカイブインデックスを表示する

git-show-ref[1]

ローカルリポジトリ内の参照をリスト表示する

git-unpack-file[1]

BLOB の内容を含む一時ファイルを作成する

git-var[1]

Git 論理変数を表示する

git-verify-pack[1]

パックされた Git アーカイブファイルを検証する

一般に、尋問コマンドは作業ツリー内のファイルに触れません。

リポジトリの同期

git-daemon[1]

Git リポジトリのための非常にシンプルなサーバー

git-fetch-pack[1]

別のリポジトリから不足しているオブジェクトを受信する

git-http-backend[1]

HTTP 経由の Git のサーバー側実装

git-send-pack[1]

Git プロトコルを介して別のリポジトリにオブジェクトをプッシュする

git-update-server-info[1]

補助情報ファイルを更新して、ダミーサーバーを支援する

以下は上記で利用される補助コマンドであり、エンドユーザーは通常直接利用しません。

git-http-fetch[1]

HTTP 経由でリモート Git リポジトリからダウンロードする

git-http-push[1]

HTTP/DAV 経由で別のリポジトリにオブジェクトをプッシュする

git-receive-pack[1]

リポジトリにプッシュされたものを受信する

git-shell[1]

Git 専用の SSH アクセス用の制限付きログインシェル

git-upload-archive[1]

アーカイブを git-archive に返信する

git-upload-pack[1]

オブジェクトをパックして git-fetch-pack に送り返す

内部ヘルパーコマンド

これらは他のコマンドによって使用される内部ヘルパーコマンドであり、エンドユーザーは通常直接使用しません。

git-check-attr[1]

gitattributes 情報を表示する

git-check-ignore[1]

gitignore / exclude ファイルをデバッグする

git-check-mailmap[1]

連絡先の正規名とメールアドレスを表示する

git-check-ref-format[1]

参照名が適切に形成されていることを保証する

git-column[1]

データを列で表示する

git-credential[1]

ユーザー認証情報を取得および保存する

git-credential-cache[1]

パスワードをメモリに一時的に保存するヘルパー

git-credential-store[1]

認証情報をディスクに保存するヘルパー

git-fmt-merge-msg[1]

マージコミットメッセージを作成する

git-hook[1]

git フックを実行する

git-interpret-trailers[1]

コミットメッセージに構造化情報を追加または解析する

git-mailinfo[1]

単一の電子メールメッセージからパッチと著者を抽出する

git-mailsplit[1]

シンプルな UNIX mbox 分割プログラム

git-merge-one-file[1]

git-merge-index で使用する標準のヘルパープログラム

git-patch-id[1]

パッチの一意な ID を計算する

git-sh-i18n[1]

シェルスクリプト用の Git の i18n 設定コード

git-sh-setup[1]

共通の Git シェルスクリプトセットアップコード

git-stripspace[1]

不要な空白を削除する

ガイド

以下のドキュメントページは、Git の概念に関するガイドです。

gitcore-tutorial[7]

開発者向けの Git コアチュートリアル

gitcredentials[7]

Git にユーザー名とパスワードを提供する

gitcvs-migration[7]

CVS ユーザーのための Git

gitdiffcore[7]

差分出力の調整

giteveryday[7]

日常の Git のための便利な最小限のコマンドセット

gitfaq[7]

Git の使用に関するよくある質問

gitglossary[7]

Git 用語集

gitnamespaces[7]

Git 名前空間

gitremote-helpers[7]

リモートリポジトリとやり取りするためのヘルパープログラム

gitsubmodules[7]

あるリポジトリを別のリポジトリ内にマウントする

gittutorial[7]

Git のチュートリアル入門

gittutorial-2[7]

Git のチュートリアル入門: パート2

gitworkflows[7]

Git で推奨されるワークフローの概要

リポジトリ、コマンド、およびファイルインターフェース

このドキュメントでは、ユーザーが直接操作することが期待されるリポジトリおよびコマンドインターフェースについて説明します。基準の詳細については、git-help[1]--user-formats を参照してください。

gitattributes[5]

パスごとの属性を定義する

gitcli[7]

Git コマンドラインインターフェースと規約

githooks[5]

Git が使用するフック

gitignore[5]

意図的に追跡されないファイルを無視するように指定する

gitmailmap[5]

作者/コミッター名および/またはEメールアドレスをマップする

gitmodules[5]

サブモジュールプロパティを定義する

gitrepository-layout[5]

Git リポジトリレイアウト

gitrevisions[7]

Git のリビジョンと範囲の指定

ファイル形式、プロトコル、およびその他の開発者インターフェース

このドキュメントでは、ファイル形式、ワイヤープロトコル、およびその他の Git 開発者インターフェースについて説明します。git-help[1]--developer-interfaces を参照してください。

gitformat-bundle[5]

バンドルファイル形式

gitformat-chunk[5]

チャンクベースのファイル形式

gitformat-commit-graph[5]

Git コミットグラフ形式

gitformat-index[5]

Git インデックス形式

gitformat-pack[5]

Git パック形式

gitformat-signature[5]

Git 暗号署名形式

gitprotocol-capabilities[5]

プロトコル v0 および v1 の機能

gitprotocol-common[5]

様々なプロトコルに共通するもの

gitprotocol-http[5]

Git HTTP ベースのプロトコル

gitprotocol-pack[5]

パックがワイヤー経由で転送される方法

gitprotocol-v2[5]

Git ワイヤープロトコル、バージョン2

設定メカニズム

Git は、リポジトリごとおよびユーザーごとのカスタマイズを保存するために、シンプルなテキスト形式を使用します。このような設定ファイルは次のようになります。

#
# A '#' or ';' character indicates a comment.
#

; core variables
[core]
	; Don't trust file modes
	filemode = false

; user identity
[user]
	name = "Junio C Hamano"
	email = "gitster@pobox.com"

様々なコマンドが設定ファイルから読み込み、それに応じて動作を調整します。設定メカニズムのリストと詳細については、git-config[1] を参照してください。

識別子の用語

<object>

あらゆるタイプのオブジェクトのオブジェクト名を示します。

<blob>

ブロブオブジェクト名を示します。

<tree>

ツリーオブジェクト名を示します。

<commit>

コミットオブジェクト名を示します。

<tree-ish>

ツリー、コミット、またはタグオブジェクト名を示します。 引数を受け取るコマンドは、最終的に オブジェクトに対して操作を行いますが、 を指す および オブジェクトを自動的に逆参照します。

<commit-ish>

コミットまたはタグオブジェクト名を示します。 引数を受け取るコマンドは、最終的に オブジェクトに対して操作を行いますが、 を指す オブジェクトを自動的に逆参照します。

<type>

オブジェクトタイプが必要であることを示します。現在、blobtreecommittag のいずれかです。

<file>

ファイル名を示します。GIT_INDEX_FILE が記述するツリー構造のルートに対する相対パスであることがほとんどです。

シンボリック識別子

任意の <object> を受け入れる任意の Git コマンドは、以下のシンボリック表記も使用できます。

HEAD

現在のブランチの先端を示します。

<tag>

有効なタグ(つまり、refs/tags/<tag> 参照)。

<head>

有効なヘッド (つまり、refs/heads/<head> 参照)。

オブジェクト名を指定するより完全な方法のリストについては、gitrevisions[7] の「SPECIFYING REVISIONS」セクションを参照してください。

ファイル/ディレクトリ構造

gitrepository-layout[5] ドキュメントを参照してください。

各フックの詳細については、githooks[5] を参照してください。

高レベルの SCM は、$GIT_DIR に追加情報を提供し、管理する場合があります。

用語

gitglossary[7] を参照してください。

環境変数

様々な Git コマンドは環境変数を考慮し、その動作を変更します。「ブール値」とマークされた環境変数は、ブール値の設定変数と同じ方法で値を受け取ります。つまり、「true」、「yes」、「on」、および正の数値は「yes」と解釈され、「false」、「no」、「off」、および「0」は「no」と解釈されます。

以下は変数です。

システム

HOME

ユーザーのホームディレクトリへのパスを指定します。Windows では、未設定の場合、Git はプロセス環境変数を次のように設定します: $HOMEDRIVE$HOMEPATH$HOMEDRIVE$HOMEPATH の両方が存在する場合)。それ以外の場合は $USERPROFILE$USERPROFILE が存在する場合)。

Git リポジトリ

これらの環境変数は、すべてのコア Git コマンドに適用されます。注意: Git の上に存在する SCM によって使用/上書きされる可能性があるため、外部のフロントエンドを使用する場合は注意が必要です。

GIT_INDEX_FILE

この環境変数は、代替のインデックスファイルを指定します。指定されていない場合、デフォルトの $GIT_DIR/index が使用されます。

GIT_INDEX_VERSION

この環境変数は、インデックスファイルを書き出すときに使用されるインデックスバージョンを指定します。既存のインデックスファイルには影響しません。デフォルトでは、インデックスファイルバージョン2または3が使用されます。詳細については git-update-index[1] を参照してください。

GIT_OBJECT_DIRECTORY

オブジェクトストレージディレクトリがこの環境変数で指定されている場合、SHA1 ディレクトリはその下に作成されます。そうでない場合、デフォルトの $GIT_DIR/objects ディレクトリが使用されます。

GIT_ALTERNATE_OBJECT_DIRECTORIES

Git オブジェクトは不変であるため、古いオブジェクトは共有の読み取り専用ディレクトリにアーカイブできます。この変数は、Git オブジェクトの検索に使用できる Git オブジェクトディレクトリの ":" 区切り(Windows では ";" 区切り)リストを指定します。新しいオブジェクトはこれらのディレクトリには書き込まれません。

" (二重引用符) で始まるエントリは、C スタイルの引用符付きパスとして解釈され、先頭と末尾の二重引用符が削除され、バックスラッシュエスケープが尊重されます。例: 値 "path-with-\"-and-:-in-it":vanilla-path には2つのパスがあります: path-with-"-and-:-in-itvanilla-path

GIT_DIR

GIT_DIR 環境変数が設定されている場合、リポジトリのベースとしてデフォルトの .git の代わりにそのパスが指定されます。--git-dir コマンドラインオプションもこの値を設定します。

GIT_WORK_TREE

作業ツリーのルートへのパスを設定します。これは --work-tree コマンドラインオプションと core.worktree 設定変数でも制御できます。

GIT_NAMESPACE

Git 名前空間を設定します。詳細については gitnamespaces[7] を参照してください。--namespace コマンドラインオプションもこの値を設定します。

GIT_CEILING_DIRECTORIES

これはコロン区切りの絶対パスのリストである必要があります。設定されている場合、Git がリポジトリディレクトリを探す際に chdir しないディレクトリのリストです(読み込みの遅いネットワークディレクトリを除外するのに便利です)。現在の作業ディレクトリやコマンドラインまたは環境で設定された GIT_DIR は除外されません。通常、Git はこのリストのエントリを読み取り、現在のディレクトリと比較するために存在する可能性のあるシンボリックリンクを解決する必要があります。しかし、このアクセスさえ遅い場合、リストに空のエントリを追加して、後続のエントリがシンボリックリンクではなく解決する必要がないことを Git に伝えることができます。例: GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink

GIT_DISCOVERY_ACROSS_FILESYSTEM

「.git」リポジトリディレクトリを持たないディレクトリで実行される場合、Git は親ディレクトリでそのようなディレクトリを探して作業ツリーのトップを見つけようとしますが、デフォルトではファイルシステムの境界を越えません。このブール環境変数を true に設定すると、Git にファイルシステムの境界で停止しないように指示できます。GIT_CEILING_DIRECTORIES と同様に、これは GIT_DIR またはコマンドラインで明示的に設定されたリポジトリディレクトリには影響しません。

GIT_COMMON_DIR

この変数がパスに設定されている場合、通常 $GIT_DIR にある作業ツリー以外のファイルは、このパスから取得されます。HEAD やインデックスなどの作業ツリー固有のファイルは $GIT_DIR から取得されます。詳細は gitrepository-layout[5] および git-worktree[1] を参照してください。この変数は GIT_INDEX_FILE、GIT_OBJECT_DIRECTORY などの他のパス変数よりも優先順位が低いです。

GIT_DEFAULT_HASH

この変数が設定されている場合、新しいリポジトリのデフォルトのハッシュアルゴリズムは、この値に設定されます。この値はクローン時には無視され、常にリモートリポジトリの設定が使用されます。デフォルトは「sha1」です。git-init[1]--object-format を参照してください。

GIT_DEFAULT_REF_FORMAT

この変数が設定されている場合、新しいリポジトリのデフォルトのリファレンスバックエンドフォーマットは、この値に設定されます。デフォルトは「files」です。git-init[1]--ref-format を参照してください。

Git コミット

GIT_AUTHOR_NAME

コミットまたはタグオブジェクトを作成する際、または参照ログを書き込む際に、作者のIDに使用される人間が読める名前。user.name および author.name の設定を上書きします。

GIT_AUTHOR_EMAIL

コミットまたはタグオブジェクトを作成する際、または参照ログを書き込む際に、作者のIDに使用されるメールアドレス。user.email および author.email の設定を上書きします。

GIT_AUTHOR_DATE

コミットまたはタグオブジェクトを作成する際、または参照ログを書き込む際に、作者のIDに使用される日付。有効な形式については git-commit[1] を参照してください。

GIT_COMMITTER_NAME

コミットまたはタグオブジェクトを作成する際、または参照ログを書き込む際に、コミッターのIDに使用される人間が読める名前。user.name および committer.name の設定を上書きします。

GIT_COMMITTER_EMAIL

コミットまたはタグオブジェクトを作成する際、または参照ログを書き込む際に、作者のIDに使用されるメールアドレス。user.email および committer.email の設定を上書きします。

GIT_COMMITTER_DATE

コミットまたはタグオブジェクトを作成する際、または参照ログを書き込む際に、コミッターのIDに使用される日付。有効な形式については git-commit[1] を参照してください。

EMAIL

他の関連する環境変数や設定が設定されていない場合、作者とコミッターの身元に使用されるメールアドレス。

Git Diff

GIT_DIFF_OPTS

有効な唯一の設定は、統合差分が作成されたときに表示されるコンテキスト行数を設定するための「--unified=?」または「-u?」です。これは、Git diff コマンドラインに渡される「-U」または「--unified」オプションの値よりも優先されます。

GIT_EXTERNAL_DIFF

環境変数 GIT_EXTERNAL_DIFF が設定されている場合、それに指定されたプログラムが差分を生成するために呼び出され、Git は組み込みの差分機構を使用しません。追加、削除、または変更されたパスの場合、GIT_EXTERNAL_DIFF は7つのパラメーターで呼び出されます。

path old-file old-hex old-mode new-file new-hex new-mode

ここで

<old|new>-file

<old|new> の内容を読み取るために GIT_EXTERNAL_DIFF が使用できるファイルです。

<old|new>-hex

は 40 桁の 16 進数の SHA-1 ハッシュです。

<old|new>-mode

はファイルモードの8進表現です。

ファイルパラメータは、ユーザーの作業ファイル(例:「git-diff-files」の new-file)、/dev/null(例:新しいファイルが追加された場合の old-file)、または一時ファイル(例:インデックス内の old-file)を指すことができます。GIT_EXTERNAL_DIFF は一時ファイルのリンク解除を気にする必要はありません。GIT_EXTERNAL_DIFF が終了すると削除されます。

未マージのパスの場合、GIT_EXTERNAL_DIFF は1つのパラメータ、<path> で呼び出されます。

各パスに対して GIT_EXTERNAL_DIFF が呼び出される際、2つの環境変数 GIT_DIFF_PATH_COUNTER および GIT_DIFF_PATH_TOTAL が設定されます。

GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE

このブール環境変数が true に設定されている場合、GIT_EXTERNAL_DIFF コマンドは、入力ファイルが等しいと見なす場合は終了コード0を、異なる場合は1を返すことが期待されます(diff(1) と同様)。デフォルトである false に設定されている場合、コマンドは等しいかどうかにかかわらず終了コード0を返すことが期待されます。その他の終了コードは、Git が致命的なエラーを報告する原因となります。

GIT_DIFF_PATH_COUNTER

各パスごとに1ずつ増加する1ベースのカウンター。

GIT_DIFF_PATH_TOTAL

パスの合計数。

その他

GIT_MERGE_VERBOSITY

再帰マージ戦略によって表示される出力の量を制御する数値。merge.verbosity を上書きします。git-merge[1] を参照してください。

GIT_PAGER

この環境変数は $PAGER を上書きします。空文字列または「cat」の値に設定されている場合、Git はページャーを起動しません。また、git-config[1]core.pager オプションも参照してください。

GIT_PROGRESS_DELAY

オプションの進行状況インジケータを表示するまでに遅延させる秒数を制御する数値。デフォルトは2。

GIT_EDITOR

この環境変数は $EDITOR$VISUAL を上書きします。これは、対話モードでエディタを起動する場合に、いくつかの Git コマンドによって使用されます。git-var[1] および git-config[1]core.editor オプションも参照してください。

GIT_SEQUENCE_EDITOR

この環境変数は、インタラクティブなリベースのToDoリストを編集する際に、設定されたGitエディタを上書きします。git-rebase[1]と、git-config[1]sequence.editorオプションも参照してください。

GIT_SSH
GIT_SSH_COMMAND

これらの環境変数のいずれかが設定されている場合、git fetchgit pushは、リモートシステムに接続する必要があるときに、sshの代わりに指定されたコマンドを使用します。設定されたコマンドに渡されるコマンドラインパラメータは、sshのバリアントによって決定されます。詳細については、git-config[1]ssh.variantオプションを参照してください。

$GIT_SSH_COMMAND$GIT_SSHよりも優先され、シェルによって解釈されるため、追加の引数を含めることができます。$GIT_SSHは、プログラムへのパスのみである必要があります(追加の引数が必要な場合は、ラッパーシェルスクリプトでも構いません)。

通常、必要なオプションは個人の.ssh/configファイルで設定する方が簡単です。詳細については、sshのドキュメントを参照してください。

GIT_SSH_VARIANT

この環境変数が設定されている場合、GIT_SSH/GIT_SSH_COMMAND/core.sshCommandがOpenSSH、plink、またはtortoiseplinkのいずれを参照しているかについてのGitの自動検出を上書きします。この変数は、同じ目的を果たす設定ssh.variantを上書きします。

GIT_SSL_NO_VERIFY

この環境変数を任意の値に設定してエクスポートすると、HTTPS経由でフェッチまたはプッシュする際に、GitはSSL証明書を検証しなくなります。

GIT_ATTR_SOURCE

gitattributesが読み込まれるtreeishを設定します。

GIT_ASKPASS

この環境変数が設定されている場合、パスワードまたはパスフレーズ(HTTPまたはIMAP認証など)を取得する必要があるGitコマンドは、適切なプロンプトをコマンドライン引数としてこのプログラムを呼び出し、そのSTDOUTからパスワードを読み取ります。git-config[1]core.askPassオプションも参照してください。

GIT_TERMINAL_PROMPT

このブール環境変数がfalseに設定されている場合、gitは端末でプロンプトを表示しません(例:HTTP認証を要求する際)。

GIT_CONFIG_GLOBAL
GIT_CONFIG_SYSTEM

グローバルまたはシステムレベルの設定ファイルの代わりに、指定されたファイルから設定を取得します。GIT_CONFIG_SYSTEMが設定されている場合、ビルド時に定義されたシステム設定ファイル(通常は/etc/gitconfig)は読み込まれません。同様に、GIT_CONFIG_GLOBALが設定されている場合、$HOME/.gitconfig$XDG_CONFIG_HOME/git/configも読み込まれません。対応するレベルの設定ファイルの読み込みをスキップするには、/dev/nullに設定できます。

GIT_CONFIG_NOSYSTEM

システムワイドの$(prefix)/etc/gitconfigファイルから設定を読み込むかどうかをスキップします。このブール環境変数は、$HOME$XDG_CONFIG_HOMEと組み合わせて、凝ったスクリプトのために予測可能な環境を作成するために使用できます。または、権限のある誰かがバグのある/etc/gitconfigファイルを修正するのを待っている間、一時的にそのファイルを使用しないようにするためにtrueに設定することもできます。

GIT_FLUSH

このブール環境変数がtrueに設定されている場合、git blame(インクリメンタルモード)、git rev-listgit loggit check-attrgit check-ignoreなどのコマンドは、各レコードがフラッシュされた後に出力ストリームのフラッシュを強制します。この変数がfalseに設定されている場合、これらのコマンドの出力は完全にバッファリングされたI/Oを使用して行われます。この環境変数が設定されていない場合、Gitはstdoutがファイルにリダイレクトされているかどうかによって、バッファリングされたフラッシュまたはレコード指向のフラッシュを選択します。

GIT_TRACE

エイリアス展開、組み込みコマンド実行、外部コマンド実行など、一般的なトレースメッセージを有効にします。

この変数が「1」、「2」、または「true」(比較は大文字小文字を区別しない)に設定されている場合、トレースメッセージはstderrに出力されます。

変数が2より大きく10未満の整数値(厳密に)に設定されている場合、Gitはこの値をオープンファイル記述子として解釈し、このファイル記述子にトレースメッセージを書き込もうとします。

あるいは、変数が絶対パス(/文字で始まる)に設定されている場合、Gitはこれをファイルパスとして解釈し、トレースメッセージをそこに追加しようとします。

変数を設定解除するか、空、"0"、または"false"(大文字小文字を区別しない)に設定すると、トレースメッセージは無効になります。

GIT_TRACE_FSMONITOR

ファイルシステムモニター拡張機能のトレースメッセージを有効にします。利用可能なトレース出力オプションについては、GIT_TRACEを参照してください。

GIT_TRACE_PACK_ACCESS

すべてのパックへのすべてのアクセスに対するトレースメッセージを有効にします。各アクセスについて、パックファイル名とパック内のオフセットが記録されます。これは、一部のパック関連のパフォーマンス問題のトラブルシューティングに役立つ場合があります。利用可能なトレース出力オプションについては、GIT_TRACEを参照してください。

GIT_TRACE_PACKET

特定のプログラムに出入りするすべてのパケットに対するトレースメッセージを有効にします。これは、オブジェクトネゴシエーションやその他のプロトコル問題のデバッグに役立ちます。トレースは「PACK」で始まるパケットでオフになります(ただし、以下のGIT_TRACE_PACKFILEを参照)。利用可能なトレース出力オプションについては、GIT_TRACEを参照してください。

GIT_TRACE_PACKFILE

特定のプログラムによって送信または受信されたパックファイルのトレースを有効にします。他のトレース出力とは異なり、このトレースは逐語的です。ヘッダーはなく、バイナリデータのクォーティングもありません。ほとんどの場合、端末に表示したり、他のトレース出力と混ぜたりするのではなく、ファイルに直接出力したいはずです(例:GIT_TRACE_PACKFILE=/tmp/my.pack)。

なお、これは現在、クローンとフェッチのクライアント側のみで実装されています。

GIT_TRACE_PERFORMANCE

各Gitコマンドの総実行時間など、パフォーマンス関連のトレースメッセージを有効にします。利用可能なトレース出力オプションについては、GIT_TRACEを参照してください。

GIT_TRACE_REFS

リファレンスデータベースに対する操作のトレースメッセージを有効にします。利用可能なトレース出力オプションについては、GIT_TRACEを参照してください。

GIT_TRACE_SETUP

Gitがセットアップフェーズを完了した後の.git、作業ツリー、現在の作業ディレクトリを出力するトレースメッセージを有効にします。利用可能なトレース出力オプションについては、GIT_TRACEを参照してください。

GIT_TRACE_SHALLOW

シャローリポジトリのフェッチ/クローンをデバッグするのに役立つトレースメッセージを有効にします。利用可能なトレース出力オプションについては、GIT_TRACEを参照してください。

GIT_TRACE_CURL

gitトランスポートプロトコルの記述情報を含む、すべての送受信データに対するcurlのフルトレースダンプを有効にします。これは、コマンドラインでcurl --trace-asciiを実行するのと似ています。利用可能なトレース出力オプションについては、GIT_TRACEを参照してください。

GIT_TRACE_CURL_NO_DATA

curlトレースが有効な場合(上記のGIT_TRACE_CURLを参照)、データはダンプせず(情報行とヘッダーのみをダンプ)、データはダンプしません。

GIT_TRACE2

「trace2」ライブラリからのより詳細なトレースメッセージを有効にします。GIT_TRACE2からの出力は、人間が読めるシンプルなテキストベースの形式です。

この変数が「1」、「2」、または「true」(比較は大文字小文字を区別しない)に設定されている場合、トレースメッセージはstderrに出力されます。

変数が2より大きく10未満の整数値(厳密に)に設定されている場合、Gitはこの値をオープンファイル記述子として解釈し、このファイル記述子にトレースメッセージを書き込もうとします。

あるいは、変数が絶対パス(/文字で始まる)に設定されている場合、Gitはこれをファイルパスとして解釈し、トレースメッセージをそこに追加しようとします。パスが既に存在し、ディレクトリである場合、トレースメッセージはそのディレクトリ内のファイル(プロセスごとに1つ)に書き込まれます。ファイル名はSIDの最後のコンポーネントとオプションのカウンター(ファイル名の衝突を避けるため)に従って命名されます。

さらに、変数がaf_unix:[<socket-type>:]<absolute-pathname>に設定されている場合、GitはパスをUnixドメインソケットとして開こうとします。ソケットタイプはstreamまたはdgramのいずれかです。

変数を設定解除するか、空、"0"、または"false"(大文字小文字を区別しない)に設定すると、トレースメッセージは無効になります。

詳細については、Trace2 documentationを参照してください。

GIT_TRACE2_EVENT

この設定は、機械解釈に適したJSONベースの形式を書き込みます。利用可能なトレース出力オプションについてはGIT_TRACE2を、詳細についてはTrace2 documentationを参照してください。

GIT_TRACE2_PERF

GIT_TRACE2で利用可能なテキストベースのメッセージに加えて、この設定はネストされた領域を理解するためのカラムベースの形式を書き込みます。利用可能なトレース出力オプションについてはGIT_TRACE2を、詳細についてはTrace2 documentationを参照してください。

GIT_TRACE_REDACT

デフォルトでは、トレースが有効になっている場合、Gitはクッキーの値、「Authorization:」ヘッダー、「Proxy-Authorization:」ヘッダー、およびパックファイルURIを編集します。このブール環境変数をfalseに設定すると、この編集を防ぐことができます。

GIT_NO_REPLACE_OBJECTS

この環境変数を設定してエクスポートすると、Gitは置換refを無視し、Gitオブジェクトを置換しません。

GIT_LITERAL_PATHSPECS

このブール環境変数をtrueに設定すると、Gitはすべてのパススペックをグロブパターンとしてではなく、リテラルとして扱います。例えば、GIT_LITERAL_PATHSPECS=1 git log -- *.c'を実行すると、グロブ*.cに一致するパスではなく、パス*.cに触れるコミットを検索します。これは、Gitにリテラルパスを供給している場合(例:以前にgit ls-tree--raw差分出力などで与えられたパスなど)に必要となるかもしれません。

GIT_GLOB_PATHSPECS

このブール環境変数をtrueに設定すると、Gitはすべてのパススペックをグロブパターン(別名「glob」マジック)として扱います。

GIT_NOGLOB_PATHSPECS

このブール環境変数をtrueに設定すると、Gitはすべてのパススペックをリテラル(別名「literal」マジック)として扱います。

GIT_ICASE_PATHSPECS

このブール環境変数をtrueに設定すると、Gitはすべてのパススペックを大文字と小文字を区別しないものとして扱います。

GIT_NO_LAZY_FETCH

このブール環境変数をtrueに設定すると、Gitはプロミサーリモートから欠落したオブジェクトをオンデマンドで遅延フェッチしなくなります。

GIT_REFLOG_ACTION

refが更新されると、refの古い値と新しい値に加えて、refが更新された理由(通常はrefを更新した高レベルコマンドの名前)を追跡するために、reflogエントリが作成されます。スクリプト化されたPorcelainコマンドは、エンドユーザーによってトップレベルコマンドとして呼び出されたときに、その名前をこの変数に設定するためにgit-sh-setupのset_reflog_actionヘルパー関数を使用できます。これはreflogの本文に記録されます。

GIT_REF_PARANOIA

このブール環境変数がfalseに設定されている場合、refリストを反復処理するときに破損したまたは誤った名前のrefを無視します。通常、Gitはこれらのrefを含めようとしますが、これにより一部の操作が失敗する可能性があります。これは通常、望ましい動作です。なぜなら、潜在的に破壊的な操作(例:git-prune[1])は、破損したrefを無視するよりも中止する方が良いためです(その結果、それらが指す履歴が保存する価値がないと見なされるため)。デフォルト値は1です(つまり、すべての操作の検出と中止について偏執的になります)。通常、これを0に設定する必要はありませんが、破損したリポジトリからデータを救出しようとする場合に役立つ場合があります。

GIT_COMMIT_GRAPH_PARANOIA

コミットグラフからコミットオブジェクトをロードする際、Gitはオブジェクトデータベース内のオブジェクトの存在チェックを実行します。これは、既に削除されたコミットへの参照を含む古いコミットグラフによる問題を回避するために行われますが、パフォーマンスの低下を伴います。

デフォルトは「false」で、上記の動作を無効にします。これを「true」に設定すると、存在チェックが有効になり、パフォーマンスを犠牲にして、古いコミットがコミットグラフから返されることはありません。

GIT_ALLOW_PROTOCOL

コロン区切りのプロトコルリストに設定されている場合、protocol.allowneverに設定され、リストされた各プロトコルがprotocol.<name>.allowalwaysに設定されているかのように動作します(既存の設定を上書きします)。詳細については、git-config[1]protocol.allowの説明を参照してください。

GIT_PROTOCOL_FROM_USER

このブール環境変数をfalseに設定すると、user状態に設定されているフェッチ/プッシュ/クローンで使用されるプロトコルが禁止されます。これは、信頼できないリポジトリからの再帰的なサブモジュール初期化を制限したり、潜在的に信頼できないURLをgitコマンドにフィードするプログラムにとって役立ちます。詳細については、git-config[1]を参照してください。

GIT_PROTOCOL

内部使用のみ。ワイヤプロトコルのハンドシェイクで使用されます。オプションの値<key>[=<value>]を持つ、コロン:区切りのキーのリストが含まれます。不明なキーと値の存在は無視する必要があります。

サーバーは、この変数が一部のトランスポートで渡されることを許可するように設定する必要がある場合があることに注意してください。ローカルリポジトリ(つまり、file://またはファイルシステムパス)、およびgit://プロトコルを介してアクセスする場合、自動的に伝播されます。git-over-httpの場合、ほとんどの設定で自動的に機能するはずですが、git-http-backend[1]の議論を参照してください。git-over-sshの場合、sshサーバーはクライアントがこの変数を渡すことを許可するように設定する必要がある場合があります(例:OpenSSHでAcceptEnv GIT_PROTOCOLを使用)。

この設定はオプションです。変数が伝播されない場合、クライアントは元の「v0」プロトコルにフォールバックします(ただし、一部のパフォーマンス改善や機能を見逃す可能性があります)。この変数は現在、クローンとフェッチにのみ影響します。プッシュにはまだ使用されていません(ただし、将来的に使用される可能性があります)。

GIT_OPTIONAL_LOCKS

このブール環境変数がfalseに設定されている場合、Gitはロックを取得する必要があるオプションのサブ操作を実行せずに、要求された操作を完了します。例えば、これによりgit statusが副次的にインデックスを更新するのを防ぎます。これは、リポジトリに対する他の操作とロック競合を引き起こしたくないバックグラウンドで実行されているプロセスにとって役立ちます。デフォルトは1です。

GIT_REDIRECT_STDIN
GIT_REDIRECT_STDOUT
GIT_REDIRECT_STDERR

Windowsのみ: 標準入力/出力/エラーハンドルを環境変数で指定されたパスにリダイレクトすることを許可します。これは、マルチスレッドアプリケーションで特に役立ちます。CreateProcess()を介して標準ハンドルを渡す標準的な方法は、ハンドルを継承可能としてマークする必要があるため(そして結果としてすべての生成されたプロセスがそれらを継承し、通常のGit操作をブロックする可能性があるため)、オプションではありません。主な意図された使用ケースは、通信に名前付きパイプを使用することです(例:\\.\pipe\my-git-stdin-123)。

2つの特殊な値がサポートされています。offは単に対応する標準ハンドルを閉じます。GIT_REDIRECT_STDERR2>&1の場合、標準エラーは標準出力と同じハンドルにリダイレクトされます。

GIT_PRINT_SHA1_ELLIPSIS (非推奨)

yesに設定すると、(省略された)SHA-1値の後に省略記号が出力されます。これは、detached HEADsの表示(git-checkout[1])および生の差分出力(git-diff[1])に影響します。前述のケースで省略記号を出力することはもはや適切とは見なされておらず、そのサポートは(変数とともに)近い将来削除される可能性があります。

GIT_ADVICE

0に設定すると、すべてのアドバイスメッセージが無効になります。これらのメッセージは、人間のユーザーが問題のある状況から抜け出したり、新機能を利用したりするのに役立つヒントを提供することを目的としています。ユーザーはadvice.*設定キーを使用して個々のメッセージを無効にできます。これらのメッセージはGitプロセスを実行するツールにとって妨げとなる可能性があるため、この変数はメッセージを無効にするために利用できます。(グローバルオプション--no-adviceも利用可能ですが、このオプションが理解されない古いGitバージョンでは失敗する可能性があります。環境変数は、それを理解しないGitバージョンでは無視されます。)

議論

以下の詳細については、ユーザーマニュアルのGit概念の章およびgitcore-tutorial[7]から入手できます。

Gitプロジェクトは通常、トップレベルに「.git」サブディレクトリを持つ作業ディレクトリで構成されます。.gitディレクトリには、とりわけ、プロジェクトの完全な履歴を表す圧縮オブジェクトデータベース、その履歴を現在の作業ツリーのコンテンツにリンクする「インデックス」ファイル、およびタグやブランチヘッドなどのその履歴への名前付きポインタが含まれています。

オブジェクトデータベースには、主に3種類のオブジェクトが含まれます。ファイルデータを保持するblob、blobや他のツリーを指してディレクトリ階層を構築するtree、そしてそれぞれ1つのtreeといくつかの親コミットを参照するcommitです。

他のシステムでは「チェンジセット」または「バージョン」と呼ばれるコミットは、プロジェクト履歴における1つのステップを表し、各親はその直前のステップを表します。複数の親を持つコミットは、独立した開発ラインのマージを表します。

すべてのオブジェクトは、その内容のSHA-1ハッシュ(通常は40桁の16進数文字列で記述される)によって命名されます。このような名前はグローバルに一意です。コミットに至る全履歴は、そのコミットのみに署名することで保証できます。この目的のために、4番目のオブジェクトタイプであるタグが提供されます。

最初に作成されたオブジェクトは個別のファイルに保存されますが、効率のために後で「パックファイル」にまとめて圧縮されることがあります。

リフと呼ばれる名前付きポインタは、履歴の興味深い箇所をマークします。リフには、オブジェクトのSHA-1名または別のリフの名前(後者は「シンボリックリフ」と呼ばれます)が含まれる場合があります。refs/head/で始まる名前のリフには、開発中のブランチの最新のコミット(または「ヘッド」)のSHA-1名が含まれます。興味のあるタグのSHA-1名はrefs/tags/の下に保存されます。HEADという名前のシンボリックリフには、現在チェックアウトされているブランチの名前が含まれます。

インデックスファイルは、すべてのパスのリストと、各パスについて、ブロブオブジェクトと一連の属性で初期化されます。ブロブオブジェクトは、現在のブランチのヘッド時点でのファイルの内容を表します。属性(最終更新時刻、サイズなど)は、作業ツリー内の対応するファイルから取得されます。これらの属性を比較することで、作業ツリーへのその後の変更を見つけることができます。インデックスは新しい内容で更新でき、インデックスに保存された内容から新しいコミットを作成できます。

インデックスは、特定のパス名に対して複数のエントリ(「ステージ」と呼ばれる)を格納することもできます。これらのステージは、マージが進行中にファイルのさまざまな未マージバージョンを保持するために使用されます。

セキュリティ

一部の設定オプションとフックファイルは、Gitに任意のシェルコマンドを実行させる可能性があります。設定とフックはgit cloneでコピーされないため、信頼できないコンテンツを持つリモートリポジトリをクローンし、git logなどで検査することは一般的に安全です。

しかし、信頼できないソースから来た.gitディレクトリ(またはそれを囲む作業ツリー)でGitコマンドを実行することは安全ではありません。その構成ファイルとフックに記述されたコマンドは通常どおり実行されます。

デフォルトでは、リポジトリがコマンドを実行しているユーザー以外の所有者である場合、Gitは実行を拒否します。git-config[1]safe.directoryのエントリを参照してください。これはマルチユーザー環境であなたを保護するのに役立ちますが、信頼できないリポジトリをあなた自身が所有している場合(例えば、信頼できないソースからzipファイルやtarballを抽出した場合)もあります。そのような場合、まず信頼できないリポジトリを「サニタイズ」する必要があります。

信頼できない.gitディレクトリがある場合、まずgit clone --no-localでクローンして、クリーンなコピーを取得する必要があります。Gitは、クローンまたはフェッチのサーバー側を処理するupload-packによって実行されるオプションとフックのセットを制限しますが、upload-packに対する攻撃の表面積は大きいため、ある程度のリスクがあることに注意してください。最も安全な方法は、リポジトリを特権のないユーザーとして提供することです(git-daemon[1]、ssh、または他のツールを使用してユーザーIDを変更する)。git-upload-pack[1]SECURITYセクションの議論を参照してください。

さらに詳しいドキュメント

Gitの使用を開始するには、「説明」セクションの参考文献を参照してください。以下は、初めてのユーザーにとっては必要以上に詳細かもしれません。

ユーザーマニュアルのGitの概念の章gitcore-tutorial[7]はどちらも、基盤となるGitアーキテクチャの入門書を提供しています。

推奨されるワークフローの概要については、gitworkflows[7]を参照してください。

いくつかの役立つ例については、howtoドキュメントも参照してください。

内部構造はGit API ドキュメントに記載されています。

CVSから移行するユーザーは、gitcvs-migration[7]も読むことをお勧めします。

著者

GitはLinus Torvaldsによって開始され、現在はJunio C Hamanoによってメンテナンスされています。Gitメーリングリスト <git@vger.kernel.org>から多数の貢献が寄せられています。https://openhub.net/p/git/contributors/summaryには、より完全な貢献者リストが掲載されています。

git.git自体のクローンを持っている場合、git-shortlog[1]git-blame[1]の出力により、プロジェクトの特定の箇所の作者を確認できます。

バグの報告

バグは、主に開発とメンテナンスが行われているGitメーリングリスト <git@vger.kernel.org>に報告してください。メッセージを送信するためにリストに登録する必要はありません。以前のバグ報告やその他の議論については、https://lore.kernel.org/gitのリストアーカイブを参照してください。

セキュリティ関連の問題は、Gitセキュリティメーリングリスト <git-security@googlegroups.com>に非公開で開示してください。

GIT

git[1]スイートの一部

scroll-to-top