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] [--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)は読み取れない可能性があるOS上で作業している場合に役立ちます。この動作は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名前空間を設定します。詳細については linkgit: gitnamespaces[7] を参照してください。 GIT_NAMESPACE 環境変数を設定するのと同じです。

--bare

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

--no-replace-objects

Gitオブジェクトを置き換えるための置換refを使用しません。 詳細については git-replace(1) を参照してください。

--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 に設定するのと同じです。

--no-optional-locks

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

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

アーカイブごとにオブジェクトとrefを移動します.

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

大規模 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-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)

保留中の変更の概要を生成します.

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)

multi-pack-indexを書き出し・検証します.

git-pack-objects(1)

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

git-prune-packed(1)

すでにパックファイルにある余分なオブジェクトを削除します.

git-read-tree(1)

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

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)

指定のrevのシンボリック名を検索します.

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-fmt-merge-msg-マージコミットメッセージを生成します.

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> ref)。

<head>

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

オブジェクト名のスペルのより完全なリストについては、 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-itvanilla-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が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 です。この変数は実験的です!(「THIS VARIABLE IS EXPERIMENTAL!」) git-init(1)--object-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_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のいずれを参照しているかにかかわらず、Gitの自動検出をオーバーライドします。この変数は、同じ目的を果たす構成設定 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

この環境変数が 1 に設定されている場合、 git blame (インクリメンタルモード)、 git rev-listgit loggit check-attrgit check-ignore などのコマンドは、 各レコードがフラッシュされた後に出力ストリームを強制的にフラッシュします。 この変数が 0 に設定されている場合、 これらのコマンドの出力は、完全にバッファリングされた入出力を使用して実行されます。 この環境変数が設定されていない場合、 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データベースでの操作のトレースメッセージを有効にします。使用可能なトレース出力オプションについては、 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_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_REFLOG_ACTION

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

GIT_REF_PARANOIA

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

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))に影響します。上記の場合に省略記号を印刷することはもはや適切であるとは見なされておらず、そのサポートは(この変数と一緒に)近い将来削除される可能性があります。

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(refs)と呼ばれる名前付きポインターは、履歴の中で興味深い点を指し示しています。refには、オブジェクトのSHA-1名または別のrefの名前を含めることができます。名前が ref/head/ で始まるrefには、開発中のブランチの最新のコミット(または「head」)のSHA-1名が含まれます。対象のタグのSHA-1名は、 ref/tags/ の下に保存されます。 HEAD という名前の特別な参照には、現在チェックアウトされているブランチの名前が含まれています。

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

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

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> から多くの貢献がありました。 http://www.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