SYNOPSIS

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

DESCRIPTION

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

始めは gittutorial(7) を参照してください。次に、便利な最小限のコマンドセットについては giteveryday(7) を参照してください。 Git User’s Manual には、より詳細な紹介があります。

あなたが基本的な概念をマスターしたら、このページに戻ってGitが提供するコマンドを学ぶことができます。「git help command」を使用して、個々のGitコマンドについて詳しく知ることができます。 gitcli(7) のマニュアルページには、コマンドラインコマンド構文の概要が記載されています。

最新のGitドキュメントの、フォーマットされ、ハイパーリンクされたコピーは、 https://git.github.io/htmldocs/git.html または https://git-scm.com/docs で表示できます。

OPTIONS

-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 オプションが指定されている場合、後続の「非絶対(non-absolute) -C <path> 」は、それぞれ先行する -C <path> に関連して解釈されます。 <path> は存在するが空の場合(例: -C" ")の場合、 現在の作業ディレクトリは変更されません。

このオプションは、パス名の解釈が -C オプションによって引き起こされる作業ディレクトリに対して行われるという点で、 --git-dir--work-tree のようなパス名を期待するオプションに影響します。たとえば、以下の2つの呼び出しは同等です:

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 を(設定ファイルの [foo]bar と同様に)ブール値のtrueに設定することに注意してください。等号と空の値(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のマニュアルページのmanpath(man(1) 参照)を出力して終了します。

--info-path

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

-p
--paginate

標準出力が端末の場合は、すべての出力を less (または設定されている場合は $PAGER )にパイプします。これにより、 pager.<cmd> 構成オプションが上書きされます(以下の「Configuration Mechanism」セクションを参照)。

-P
--no-pager

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

--git-dir=<path>

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

このオプションを使用して .git ディレクトリの場所を指定すると、 (リポジトリとトップレベルの作業ツリーを検出できる、) .git サブディレクトリを持つディレクトリを検索しようとするリポジトリ検出機能がオフになり、あなたが作業ツリーの最上位にいるとGitに通知します。あなたが作業ツリーの最上位ディレクトリにいない場合は、 --work-tree=<path> オプション(または GIT_WORK_TREE 環境変数)を使用して、作業ツリーの最上位がどこにあるかをGitに通知する必要があります。

<path> で開始されたかのようにgitを実行したい場合は、 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オブジェクトを置き換えるための置換参照(replacement refs)を使用しません。 これは GIT_NO_REPLACE_OBJECTS 環境変数を任意の値でエクスポートとするのと同等です。 詳細については git-replace(1) を参照してください。

--no-lazy-fetch

プロミサー・リモートから欠落しているオブジェクトを必要に応じて取得しません。 git cat-file -e <object> と一緒に使用すると、 オブジェクトがローカルで利用可能かどうかを確認するのに便利です。 これは、 環境変数 GIT_NO_LAZY_FETCH1 に設定することと同じです。

--no-optional-locks

ロック(lock)を必要とするオプションの操作は実行しないでください。これは、 GIT_OPTIONAL_LOCKS0 に設定するのと同じです。

--no-advice

すべてのアドバイス・ヒントの表示を無効にします。

--literal-pathspecs

パススペックを文字通り扱います(つまり globbing 無し、 pathspec magic 無しです)。 これは、 GIT_LITERAL_PATHSPECS 環境変数を 1 に設定するのと同じです。

--glob-pathspecs

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

--noglob-pathspecs

すべてのパススペックにリテラルマジック(literal magic)を追加します。これは、 GIT_NOGLOB_PATHSPECS 環境変数を 1 に設定するのと同じです。個々のパススペックでグロブを有効にするには、パススペックマジック :(glob) を使用します。

--icase-pathspecs

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

--list-cmds=<group>[,<group>...]

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

--attr-source=<tree-ish>

worktree ではなく <tree-ish> から gitattributes を読み取ります。 gitattributes(5) を参照してください。 これは GIT_ATTR_SOURCE 環境変数を設定するのと同じです。

GIT COMMANDS

私達はGitを、高レベル(porcelain;磁器)コマンドと低レベル(plumbing;配管)コマンドに分けています。

High-level commands (porcelain)

磁器コマンドは、メインコマンド群といくつかの補助ユーティリティに分けられます。

Main porcelain commands

git-add(1)

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

git-am(1)

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

git-archive(1)

名前付きツリーからファイルのアーカイブを作成します.

git-bisect(1)

二分木検索を使用して、バグを引き起こしたコミットを見つけます.

git-branch(1)

ブランチを、一覧表示または作成または削除します.

git-bundle(1)

オブジェクトやrefsを移動させるためにアーカイブします.

git-checkout(1)

ブランチの切り替え、または作業ツリーファイルの復元を行います。.

git-cherry-pick(1)

いくつかの既存のコミットによって導入された変更を適用します.

git-citool(1)

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

git-clean(1)

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

git-clone(1)

リポジトリを新しいディレクトリにクローン(複製)します.

git-commit(1)

変更をリポジトリへ記録します.

git-describe(1)

有効なrefに基づいて、オブジェクトに人間が読める形式の名前を付けます.

git-diff(1)

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

git-fetch(1)

別のリポジトリからオブジェクトとrefsをダウンロードします.

git-format-patch(1)

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

git-gc(1)

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

git-grep(1)

パターンにマッチする行を出力します.

git-gui(1)

Gitのための移植性の高いGUI.

git-init(1)

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

git-log(1)

コミットのログを表示.

git-maintenance(1)

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

git-merge(1)

2つまたはそれ以上の開発履歴を結合します.

git-mv(1)

ファイルまたはディレクトリまたはシンボリックリンクを移動(move)または名前変更(rename)します.

git-notes(1)

オブジェクト・ノートを追加または調べます.

git-pull(1)

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

git-push(1)

関連するオブジェクトとともにリモートrefを更新します.

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)

複数の作業ツリー(working tree)を管理します.

gitk(1)

Gitリポジトリブラウザ.

scalar(1)

大規模 Git リポジトリ管理ツール.

Ancillary Commands(補助コマンド)

操作コマンド:

git-config(1)

リポジトリー・オプションまたはグローバル・オプションの取得・設定.

git-fast-export(1)

Git データー・エクスポーター.

git-fast-import(1)

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

git-filter-branch(1)

ブランチを書き換えます.

git-mergetool(1)

マージ競合解決ツールを実行して、マージ競合を解決します.

git-pack-refs(1)

効率的なリポジトリアクセスのためにヘッド(heads)とタグ(tags)をパックします.

git-prune(1)

オブジェクトデータベースで、到達不能なすべてのオブジェクトを刈り込み(prune)します.

git-reflog(1)

reflog情報を管理します.

git-refs(1)

ref への低レベル・アクセス.

git-remote(1)

追跡中のリポジトリの組を管理します.

git-repack(1)

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

git-replace(1)

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

問合せコマンド:

git-annotate(1)

指定ファイルの各行のコミット情報を表示.

git-blame(1)

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

git-bugreport(1)

ユーザーがバグ報告を提出するための情報を収集する.

git-count-objects(1)

パックされていない(unpack)オブジェクトの数とそのディスク消費量を計量します.

git-diagnose(1)

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

git-difftool(1)

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

git-fsck(1)

データベース内のオブジェクトの接続性(connectivity)と有効性(validity)を検証します.

git-help(1)

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

git-instaweb(1)

gitwebで作業リポジトリをインスタントにブラウズします.

git-merge-tree(1)

インデックスまたは作業ツリーにに触れずに(without touching)マージを実行する.

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 Webインターフェイス(GitリポジトリのためのWebフロントエンド).

Interacting with Others(他者との交流)

これらのコマンドは、電子メールを利用したパッチを介して、他の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リポジトリからのインポートと、Perforceリポジトリへのsubmit.

git-quiltimport(1)

quilt のパッチ・セットを現在のブランチに適用します.

git-request-pull(1)

プルリクエスト文面生成(Generates a summary of pending changes).

git-send-email(1)

パッチの集まりを電子メールとして送信します.

git-svn(1)

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

Reset, restore and revert

同様の名前の3つのコマンドがあります。それは git resetgit restoregit revert です。

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

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

  • git-reset(1) は、ブランチを更新し、ブランチにコミットを追加または削除するために先端ポインタが指し示す先端(tip)を移動させることです。この操作により、コミット履歴が変更されます。

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

Low-level commands (plumbing)

Gitには独自の磁器コマンドレイヤーが含まれていますが、代替磁器コマンドの開発をサポートするには、その低レベルのコマンドで十分です。このような磁器コマンドの開発者は git-update-index(1)git-read-tree(1) を読むことから始めるといいでしょう。

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

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

Manipulation commands(操作コマンド)

git-apply(1)

パッチをファイルやインデックスに適用します.

git-checkout-index(1)

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

git-commit-graph(1)

Gitコミットグラフファイル(commit-graph file)の書き出しと検証(verify).

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)

追加の検証(extra validation)でタグ・オブジェクトを作成します.

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)

実験的(EXPERIMENTAL): 新たなベース上でコミット群をリプレイします。 ベア・リポジトリでも動きます。.

git-symbolic-ref(1)

シンボリックrefの読み取り、変更、および削除.

git-unpack-objects(1)

パックされたアーカイブからオブジェクトを取り出します.

git-update-index(1)

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

git-update-ref(1)

refに保存されているオブジェクト名を安全に更新します.

git-write-tree(1)

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

Interrogation commands(問合せコマンド)

git-cat-file(1)

リポジトリ・オブジェクトの内容または詳細情報を提供.

git-cherry(1)

上流でまだ適用されていないコミットを検索する.

git-diff-files(1)

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

git-diff-index(1)

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

git-diff-tree(1)

2つのツリーオブジェクト間で、ブロブの内容とモードを比較します.

git-for-each-ref(1)

各refに関する情報を出力します.

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)

ブロブの内容を含む一時(temporary)ファイルを作成します.

git-var(1)

Git論理変数を表示します.

git-verify-pack(1)

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

一般に、問い合わせコマンドは作業ツリー内のファイルには影響しません。

Syncing repositories(リポジトリの同期)

git-daemon(1)

Gitリポジトリ用のほんまにシンプルなサーバー.

git-fetch-pack(1)

別のリポジトリから不足しているオブジェクトを受け取ります.

git-http-backend(1)

Git over HTTP のサーバー側実装.

git-send-pack(1)

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

git-update-server-info(1)

ダムサーバー(dumb servers)を支援するための補助情報ファイル(auxiliary info file)を更新する.

以下は、上記で使用されるヘルパーコマンドです。エンドユーザーは通常、これらを直接使用することはありません。

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に送り返す.

Internal helper commands(内部ヘルパーコマンド)

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

git-check-attr(1)

gitattributes情報を表示.

git-check-ignore(1)

gitignoreや除外ファイルのデバッグ.

git-check-mailmap(1)

連絡先(contacts)の、正式な名前と電子メールアドレスを表示.

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)

不要な空白(whitespace)を削除します.

Guides(ガイド)

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

gitcore-tutorial(7)

開発者のためのGit coreチュートリアル.

gitcredentials(7)

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

gitcvs-migration(7)

CVSユーザー向けGit.

gitdiffcore(7)

diff出力の微調整.

giteveryday(7)

Git日常利用に役立つ最小限のコマンドセット.

gitfaq(7)

Gitの使用に関するよくある質問(FAQ).

gitglossary(7)

Git用語集.

gitnamespaces(7)

Git名前空間.

gitremote-helpers(7)

リモートリポジトリと対話するためのヘルパープログラム群.

gitsubmodules(7)

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

gittutorial(7)

Git入門.

gittutorial-2(7)

Git入門パート2.

gitworkflows(7)

Gitで推奨の作業手順の概要.

Repository, command and file interfaces

このドキュメントでは、ユーザーが直接操作する必要があるリポジトリとコマンド・インターフェイスについて説明します。 詳細については、 git-help(1)--user-formats を参照してください(訳注: --user-interfaces の誤記?)。

gitattributes(5)

パスごとの属性の定義.

gitcli(7)

Gitコマンドラインのインターフェイスと規則.

githooks(5)

Gitで使われるフック.

gitignore(5)

無視する、意図的に追跡しないファイルを指定します.

gitmailmap(5)

作者(author)/コミッター(committer) および/または 電子メールアドレス(E-Mail addresses)をマップします.

gitmodules(5)

サブモジュールプロパティの定義.

gitrepository-layout(5)

Gitリポジトリの間取り.

gitrevisions(7)

Gitのリビジョンと範囲を指定する.

File formats, protocols and other developer interfaces

このドキュメントでは、ファイル形式や通信プロトコルやの他の 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)

パックが通信(over-the-wire)で転送される方法.

gitprotocol-v2(5)

Git通信プロトコル・バージョン 2.

Configuration Mechanism(構成メカニズム)

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) を参照してください。

Identifier Terminology(識別子の用語)

<object>

任意のタイプのオブジェクトのオブジェクト名を現します。

<blob>

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

<tree>

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

<commit>

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

<tree-ish>

ツリーまたはコミットまたはタグオブジェクト名を示します。 <tree-ish> 引数を取るコマンドは、最終的には <tree> オブジェクトを操作したいので、 <tree> を指す <commit> オブジェクトと <tag> オブジェクトは自動的に逆参照(dereference)されます。(訳注: tree-ish;ツリーっぽいナニかの意)

<commit-ish>

コミットまたはタグオブジェクト名を示します。 <commit-ish> 引数を取るコマンドは、最終的には <commit> オブジェクトを操作したいので、 <commit> を指す <tag>オブジェクトを自動的に逆参照します。

<type>

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

<file>

ファイル名を示します。ほとんどの場合、 GIT_INDEX_FILE が記述するツリー構造のルートを基準にしています。

Symbolic Identifiers

<object> を受け入れるGitコマンドでは、以下の記号表記も使用できます:

HEAD

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

<tag>

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

<head>

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

オブジェクト名のスペルのより完全なリストについては、 gitrevisions(7) の「SPECIFYING REVISIONS」セクションを参照してください。

File/Directory Structure

gitrepository-layout(5) 文書を参照してください。

各フックの詳細については githooks(5) をご覧下さい。

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

Terminology(用語)

gitglossary(7) を参照してください。

Environment Variables(環境変数)

さまざまな Git コマンドが環境変数に注意を払い、 それによって振る舞いを変更します。 Boolean としてマークされた環境変数は、 ブール値の構成変数(configuration variables)と同じ方法で値を取得します。 つまり trueyeson や 正の数値は yes とみなされます。

以下の環境変数があります:

The Git Repository

これらの環境変数は、「すべての」コア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では ; で区切られた)リストを指定します。新しいオブジェクトはこれらのディレクトリに書き込まれません。

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

GIT_DIR

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

GIT_WORK_TREE

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

GIT_NAMESPACE

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

GIT_CEILING_DIRECTORIES

これは、コロン(:)で区切られた絶対パスのリストである必要があります。 設定されている場合、 Git がリポジトリーのディレクトリを探す際に移動してはいけないディレクトリのリストです(遅いネットワーク・ディレクトリの除外に役立ちます)。 現在の作業ディレクトリや、 コマンドラインまたは環境で設定されている 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 Commits

GIT_AUTHOR_NAME

コミットまたはタグオブジェクトを作成するとき、またはreflogを書き込むときに、作者IDで使用される、人間が読める名前。 user.nameauthor.name の構成設定を上書きします。

GIT_AUTHOR_EMAIL

コミットまたはタグオブジェクトを作成するとき、またはreflogを書き込むときに作者IDで使用される電子メールアドレス。 user.emailauthor.email の設定を上書きします。

GIT_AUTHOR_DATE

commitまたはtagオブジェクトを作成するとき、またはreflogを書き込むときに作者IDに使用される日付。有効な形式については、 git-commit(1) を参照してください。

GIT_COMMITTER_NAME

コミットオブジェクトまたはタグオブジェクトを作成するとき、またはreflogを書き込むときに、コミッターIDで使用される、人間が読める形式の名前。 user.namecommitter.name の設定を上書きします。

GIT_COMMITTER_EMAIL

コミットまたはタグオブジェクトを作成するとき、またはreflogを書き込むときに作者IDで使用される電子メールアドレス。 user.emailcommitter.email の設定を上書きします。

GIT_COMMITTER_DATE

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

EMAIL

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

Git Diffs

GIT_DIFF_OPTS

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

GIT_EXTERNAL_DIFF

環境変数 GIT_EXTERNAL_DIFF が設定されている場合、それによって指定されたプログラムが呼び出されてdiffが生成され、Gitは組み込みのdiff機構を使用しません。 追加または削除または変更されたパスの場合、 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

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

<old|new>-mode

8進数で表現されたファイルモードです。

ファイル・パラメータは、ユーザーの作業ファイル(たとえば "git-diff-files" の new-file )、または /dev/null (たとえば、新しいファイルが追加されたときの old-file )、または一時ファイル(たとえば インデックスの old-file) を指し示す事ができます。 GIT_EXTERNAL_DIFF は、一時ファイルの削除(unlink)を心配する必要はありません。一時ファイルは GIT_EXTERNAL_DIFF の指定したプログラムの呼び出しが終了すると削除されます。

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

パス GIT_EXTERNAL_DIFF が呼び出されるたびに、 GIT_DIFF_PATH_COUNTERGIT_DIFF_PATH_TOTAL の2つの環境変数が設定されます。

GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE

このブール型環境変数が true に設定されている場合、 GIT_EXTERNAL_DIFF コマンドは、 入力ファイルが等しいとみなす場合は exit コード 0 を、 異なるとみなす場合は exitコード 1 を返すことが期待されます。 これは diff(1) と同様です。 false に設定されている場合(これがデフォルトです)、 コマンドは等しいかどうかに関係なく exit コード 0 を返すことが期待されます。 それ以外の exit コードが返された場合、 Git は致命的なエラーとして扱います。

GIT_DIFF_PATH_COUNTER

パスごとに1ずつインクリメントされる1で始まるカウンター。

GIT_DIFF_PATH_TOTAL

パスの総数。

other

GIT_MERGE_VERBOSITY

再帰的マージ戦略(recursive merge strategy)によって表示される出力の量を制御する数値。 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

この環境変数は、インタラクティブリベース(interactive rebase)のtodoリストを編集するときに、構成されたGitエディタをオーバーライドします。 git-rebase(1)git-config(1)sequence.editor オプションも参照してください。

GIT_SSH
GIT_SSH_COMMAND

これらの環境変数のいずれかが設定されている場合、 git fetchgit push は、リモートシステムに接続する必要があるときに、 ssh の代わりに指定されたコマンドを使用します。設定されたコマンドに渡されるコマンドラインパラメータは、 ssh.variant によって決定されます。詳細については、 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 のいずれを参照しているかどうかの自動検出をオーバーライドします。 この変数は、 同じ目的を持つ設定 ssh.variant をオーバーライドします。

GIT_SSL_NO_VERIFY

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

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 と一緒に使用することで、 気難しい(picky)スクリプトに対応可能な環境を作成することができます。また、これを true に設定することで、バグのある /etc/gitconfig ファイルを使用することを一時的に回避し、十分な権限を持つ人が修正するまで待つこともできます。

GIT_FLUSH

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

GIT_TRACE

一般的なトレースメッセージを有効にします。例えば、エイリアス拡張や、組み込みコマンド実行や、外部コマンド実行 においてです。

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

変数が2より大きく10より小さい整数値(訳注:つまり 2 < 変数 < 10)に設定されている場合、(厳密には、)Gitはこの値を、開いているファイルデスクリプターとして解釈し、トレースメッセージをこのファイルデスクリプターに書き込もうとします。

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

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

GIT_TRACE_FSMONITOR

ファイルシステムモニター拡張機能(filesystem monitor extension)のトレースメッセージを有効にします。使用可能なトレース出力オプションについては、 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 database)での操作のトレース・メッセージを有効にします。 使用可能なトレース出力オプションについては、 GIT_TRACE を参照してください。

GIT_TRACE_SETUP

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

GIT_TRACE_SHALLOW

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

GIT_TRACE_CURL

gitトランスポートプロトコルのすべての着信および発信データ(descriptive information;説明情報を含む)のcurlフルトレースダンプを有効にします。これは、コマンドラインで curl --trace-ascii を実行するのと似ています。使用可能なトレース出力オプションについては、 GIT_TRACE を参照してください。

GIT_TRACE_CURL_NO_DATA

curlトレースが有効になっている場合(上記の GIT_TRACE_CURL を参照)、データをダンプしないでください(つまり、情報行とヘッダー(info lines and headers)のみをダンプします)。

GIT_TRACE2

「trace2」ライブラリからのより詳細なトレースメッセージを有効にします。 GIT_TRACE2 からの出力は、人間が読みやすいように単純なテキストベースの形式です。

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

変数が2より大きく10より小さい整数値(訳注:つまり 2 < 変数 < 10)に設定されている場合、(厳密には、)Gitはこの値を、開いているファイルデスクリプターとして解釈し、トレースメッセージをこのファイルデスクリプターに書き込もうとします。

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

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

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

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

GIT_TRACE2_EVENT

この設定は、ソフトウェア処理(machine interpretation)に適したJSONベースの形式で書き込みます。利用可能なトレース出力オプションについては GIT_TRACE2 を、詳細については Trace2 documentation を参照してください。

GIT_TRACE2_PERF

GIT_TRACE2 で利用可能なテキストベースのメッセージに加えて、この設定はネスト領域(nesting regions)を理解するための列ベース(column-based)のフォーマットを書き込みます。利用可能なトレース出力オプションについては GIT_TRACE2 を、完全な詳細については Trace2 documentation を参照してください。

GIT_TRACE_REDACT

デフォルトでは、 トレースがアクティブ化されると、Git は クッキーと Authorization: ヘッダーと Proxy-Authorization: ヘッダーとパックファイル URI の値を編集します。 この編集を防ぐには、このブール値環境変数を false に設定します。

GIT_NO_REPLACE_OBJECTS

この環境変数を設定してエクスポートすると、 Git に対して置換参照を無視し、 Git オブジェクトを置き換えないように指示します。

GIT_LITERAL_PATHSPECS

このブール値環境変数を true に設定すると、Gitはすべてのパススペックをグロブパターンとしてではなく文字通りに処理します。たとえば、 GIT_LITERAL_PATHSPECS=1 git log -- '*.c' を実行すると、グロブ *.c が一致するパスではなく、パス *.c に接触するコミットが検索されます。リテラルパスをGitにフィードする場合(たとえば、以前に git ls-tree--raw diff output などによって与えられたパス)にこれが必要になる場合があります。

GIT_GLOB_PATHSPECS

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

GIT_NOGLOB_PATHSPECS

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

GIT_ICASE_PATHSPECS

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

GIT_NO_LAZY_FETCH

このブール型環境変数を true に設定すると、 Git に対してプロミサー・リモートから欠落しているオブジェクトを必要に応じて遅延取得しないように指示します。

GIT_REFLOG_ACTION

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

GIT_REF_PARANOIA

このブール値環境変数を false に設定すると、 参照(refs)のリストを繰り返し処理するときに、 壊れた参照 や 不適切な名前の参照を無視します。 通常、 Git はそのような参照をインクルードしようと試みますが、 一部の操作が失敗する可能性があります。 これは、 破壊的な操作(たとえば git-prune(1))を行う可能性がある場合、 壊れた参照を無視するよりも(そしてそれが指す履歴を保存する価値がないとするよりも)、 中断(abort)したほうが良いからです。 デフォルト値は 1 です(つまり、 偏執狂的に全ての操作で(壊れた参照を)検出して中止(abort)するようにします)。 通常、 これを 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

user 状態に構成されている fetch/push/clone によって使用されるプロトコルを妨げるには、 このブール値環境変数を false に設定します。これは、信頼できないリポジトリからの再帰的なサブモジュールの初期化を制限したり、信頼できない可能性のある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" プロトコルにフォールバックします(ただし、パフォーマンスの向上や機能の一部を見逃す可能性があります)。この変数は現在、cloneとfetchにのみ影響します。pushにはまだ使用されていません(ただし、将来的に使用される可能性があります)。

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 (deprecated)

(非推奨): yes に設定されている場合、(省略形の)SHA-1値の後に省略記号を出力します。これは、切り離されたHEAD(detached HEAD)の表示(git-checkout(1))と生のdiff出力(git-diff(1))に影響します。上記の場合に省略記号を出力することはもはや適切であるとは見なされておらず、そのサポートは(この変数と一緒に)近い将来削除される可能性があります。

GIT_ADVICE

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

Discussion

以下の詳細については、 Git concepts chapter of the user-manual および gitcore-tutorial(7) から入手できます。

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

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

コミットは、他のシステムが「チェンジセット」または「バージョン」と呼ぶものと同等であり、プロジェクトの履歴のステップを表し、各親は直前のステップを表します。複数の親とのコミットは、それぞれ独立していた開発ラインの統合(マージ;merge)を表します。

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

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

参照(ref(s))と呼ばれる名前の付いたポインタは、 履歴の中で重要なポイントを示します。 参照には、 オブジェクトの SHA-1 名または別の参照の名前(後者は「シンボリック参照」と呼ばれます)が含まれる場合があります。 refs/head/ で始まる名前の参照には、 開発中のブランチの最新のコミット(または先端(head))の SHA-1 名が含まれます。 関心のあるタグの SHA-1 名は refs/tags/ の下に保存されます。 `HEAD`という名前のシンボリック参照には、 現在チェックアウトされているブランチの名前が含まれます。

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

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

SECURITY

一部の設定オプションやフック・ファイルは、 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 セクションの議論を参照してください。

FURTHER DOCUMENTATION

Gitの使用を開始するには、「description」セクションのリファレンスを参照してください。 以下は、初めてのユーザーにとっては、おそらく必要以上に詳細です。

Git concepts chapter of the user-manualgitcore-tutorial(7) はどちらも、基盤となるGitアーキテクチャの概要を示しています。

おすすめの作業手順の概要については gitworkflows(7) を参照してください。

いくつかの便利な実例について howto 文書もご覧下さい。

Git内部については Git API documentation に記載されています。

CVSから移行するユーザーには gitcvs-migration(7) も読んで欲しいです。

Authors

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) の出力は、プロジェクトの特定の部分の作者を表示することができます。

Reporting Bugs

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

セキュリティに関連する問題は、Gitセキュリティメーリングリスト <git-security@googlegroups.com> に非公開で投稿する必要があります。

SEE ALSO

GIT

Part of the git(1) suite