Git
English ▾ トピック ▾ 最新バージョン ▾ gitは2.47.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ユーザーマニュアルには、より詳細な入門情報があります。

基本的な概念を習得したら、このページに戻って、Gitが提供するコマンドを確認できます。「git help コマンド」を使用して、個々のGitコマンドの詳細を学ぶことができます。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[1]を参照してください。git --help ...は内部的にgit help ...に変換されるためです。

-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>

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

git -c foo.bar ...=を省略しても許可され、foo.barをブール値trueに設定します(設定ファイルの[foo]barと同じです)。等号を含めて値を空にする(例:git -c foo.bar= ...)と、foo.barは空の文字列に設定され、git config --type=boolfalseに変換します。

--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のマニュアルページの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=` オプション(または`GIT_WORK_TREE`環境変数)を使用して、ワークツリーの最上位レベルの場所をGitに伝える必要があります。

`` で開始されたかのように git を実行したいだけの場合、`git -C ` を使用してください。

--work-tree=

ワークツリーへのパスを設定します。絶対パスまたは現在の作業ディレクトリからの相対パスを指定できます。これは、`GIT_WORK_TREE` 環境変数と `core.worktree` 設定変数を設定することによっても制御できます(より詳細な説明については、git-config[1] の `core.worktree` を参照してください)。

--namespace=

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 ` と共に使用して、オブジェクトがローカルで利用可能かどうかを確認するのに役立ちます。これは、`GIT_NO_LAZY_FETCH`環境変数を`1`に設定することと同じです。

--no-optional-locks

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

--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=[,…​]

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

--attr-source=

ワークツリーの代わりにからgitattributesを読み取ります。gitattributes[5]を参照してください。これは、`GIT_ATTR_SOURCE`環境変数を設定することと同じです。

GITコマンド

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

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

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

メインポーセリンコマンド

git-add[1]

インデックスにファイルの内容を追加します。

git-am[1]

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

git-archive[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]

メール送信用のパッチを準備します。

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]

reflog情報の管理

git-refs[1]

refsへの低レベルアクセス

git-remote[1]

追跡対象のリポジトリセットの管理

git-repack[1]

リポジトリ内のパックされていないオブジェクトをパックする

git-replace[1]

オブジェクトを置き換えるrefsの作成、一覧表示、削除

情報取得系コマンド

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からデータを救済する

git-cvsserver[1]

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

git-imap-send[1]

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

git-p4[1]

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

git-quiltimport[1]

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

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` と重複します。

低レベルコマンド(Plumbing)

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-tree[1]

2つのツリーオブジェクトを介して見つかったBLOBの内容とモードを比較する

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/除外ファイルのデバッグを行う

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]

diff出力の調整

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]

作成者/コミッターの名前と/またはメールアドレスをマッピングする

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>

BLOBオブジェクト名を指定します。

<tree>

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

<commit>

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

<tree-ish>

ツリー、コミット、またはタグオブジェクト名を指定します。<tree-ish>引数を取るコマンドは最終的に<tree>オブジェクトを操作しますが、<tree>を指す<commit>および<tag>オブジェクトを自動的にデリファレンスします。

<commit-ish>

コミットまたはタグオブジェクト名を指定します。<commit-ish>引数を取るコマンドは最終的に<commit>オブジェクトを操作しますが、<commit>を指す<tag>オブジェクトを自動的にデリファレンスします。

<type>

オブジェクトの種類が必要であることを示します。現在は、blobtreecommit、またはtagのいずれかです。

<file>

ファイル名を指定します。ほとんどの場合、GIT_INDEX_FILEが記述するツリー構造のルートを基準とした相対パスです。

シンボリック識別子

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

HEAD

現在のブランチのヘッドを示します。

<tag>

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

<head>

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

オブジェクト名の表記方法の完全な一覧については、「リビジョンの指定」セクションのgitrevisions[7]を参照してください。

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

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

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

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

用語

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

環境変数

様々なGitコマンドは環境変数に注意を払い、動作を変更します。「ブール値」としてマークされた環境変数は、ブール値の設定変数と同じ方法で値を取ります。例えば、「true」、「yes」、「on」、および正の数は「yes」として解釈されます。

変数は次のとおりです。

Gitリポジトリ

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

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には、path-with-"-and-:-in-itvanilla-pathの2つのパスがあります。

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

コミットまたはタグオブジェクトの作成時、またはreflogの書き込み時に、作成者識別情報で使用される、人間が読み取れる名前です。user.nameおよびauthor.name設定をオーバーライドします。

GIT_AUTHOR_EMAIL

コミットまたはタグオブジェクトの作成時、またはreflogの書き込み時に、作成者識別情報で使用されるメールアドレスです。user.emailおよびauthor.email設定をオーバーライドします。

GIT_AUTHOR_DATE

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

GIT_COMMITTER_NAME

コミットまたはタグオブジェクトの作成時、またはreflogの書き込み時に、コミッター識別情報で使用される、人間が読み取れる名前です。user.nameおよびcommitter.name設定をオーバーライドします。

GIT_COMMITTER_EMAIL

コミットまたはタグオブジェクトの作成時、またはreflogの書き込み時に、コミッター識別情報で使用されるメールアドレスです。user.emailおよびcommitter.email設定をオーバーライドします。

GIT_COMMITTER_DATE

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

EMAIL

他の関連する環境変数または設定が設定されていない場合に、作成者とコミッターの識別情報で使用されるメールアドレスです。

Git差分

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

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

<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_COUNTERGIT_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経由でフェッチまたはプッシュする際にSSL証明書の検証が行われなくなります。

GIT_ATTR_SOURCE

gitattributesが読み取られるツリーイッシュを設定します。

GIT_ASKPASS

この環境変数が設定されている場合、パスワードまたはパスフレーズを取得する必要があるGitコマンド(例:HTTPまたはIMAP認証の場合)は、適切なプロンプトをコマンドライン引数としてこのプログラムを呼び出し、その標準出力からパスワードを読み取ります。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

refデータベースの操作に関するトレースメッセージを有効にします。使用可能なトレース出力オプションについては、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ドキュメントで詳細をご覧ください。

GIT_TRACE2_EVENT

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

GIT_TRACE2_PERF

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

GIT_TRACE_REDACT

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

GIT_NO_REPLACE_OBJECTS

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

GIT_LITERAL_PATHSPECS

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

GIT_GLOB_PATHSPECS

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

GIT_NOGLOB_PATHSPECS

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

GIT_ICASE_PATHSPECS

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

GIT_NO_LAZY_FETCH

このブール型の環境変数をtrueに設定すると、Gitは必要に応じてプロミサーリモートから不足しているオブジェクトを遅延フェッチしません。

GIT_REFLOG_ACTION

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

GIT_REF_PARANOIA

このブール型の環境変数をfalseに設定すると、refのリストを反復処理する際に、壊れた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状態に設定されているfetch/push/cloneで使用されるプロトコルを防止します。これは、信頼できないリポジトリからの再帰的なサブモジュールの初期化を制限する場合、または潜在的に信頼できない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 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値の後に省略記号を出力します。これは、デタッチされたHEADの表示(git-checkout[1])とraw diff出力(git-diff[1])に影響します。上記の場合の省略記号の出力はもはや適切とはみなされず、そのサポートは近い将来(変数とともに)削除される可能性があります。

GIT_ADVICE

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

議論

以下の詳細については、ユーザーマニュアルのGitの概念に関する章gitcore-tutorial[7]を参照してください。

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

オブジェクトデータベースには、3つの主要なタイプのオブジェクトが含まれています。ファイルデータを含むblob、ディレクトリ階層を構築するためにblobや他のツリーを指すツリー、およびそれぞれ単一のツリーといくつかの親コミットを参照するコミットです。

コミットは、他のシステムが「変更セット」または「バージョン」と呼ぶものと同等であり、プロジェクトの履歴におけるステップを表し、各親は直前のステップを表します。複数の親を持つコミットは、独立した開発ラインのマージを表します。

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

最初に作成されたオブジェクトは個々のファイルに格納されますが、効率のために後で「パックファイル」に圧縮される場合があります。

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

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

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

セキュリティ

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

ただし、`.git` ディレクトリ自体が信頼できないソースから取得された場合、その `.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