コマンドラインのマニュアル

Man » git マニュアルオンライン - git man ページの詳細なオンラインドキュメント

🌍
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 ユーザーマニュアル[1]には、より詳細な紹介があります。

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

最新の Git ドキュメントの書式設定されたハイパーリンク版は、
https://git.github.io/htmldocs/git.html または https://git-scm.com/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>
git を現在の作業ディレクトリではなく、<path\> で開始したかのように実行します。複数の -C オプションが指定された場合、
後続の絶対パスではない -C <path> は、前の -C <path> を基準にして解釈されます。
<path> が存在するが空の場合 (例: -C "")、現在の作業ディレクトリは変更されません。

このオプションは、--git-dir や --work-tree などのパス名が予期されるオプションに影響を与えます。 それらのパス名の解釈は、-C オプションによって引き起こされた作業ディレクトリを基準にして行われます。 たとえば、次の 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 でリストされている形式 (サブキーはドットで区切られている) であることが期待されます。

^ it -c foo.bar ...= を省略すると、foo.bar がブール値 true に設定されます(設定ファイル内の [foo]bar と同様)。 = を含めるが、値が空の場合 (git -c foo.bar= ...)、foo.bar が空の文字列に設定され、git config --type=bool によって false に変換されます。

^ -config-env=<name>=<envvar> ^ c <name\>=<value\> と同様に、構成変数 <name\> に値を設定します。ただし、<value\> は環境変数 <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 の man ページに対する manpath(man(1) を参照)を出力して終了します。

^ -info-path このバージョンの Git の Info ファイルがインストールされているパスを出力して終了します。

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

^ P, --no-pager Git の出力をページャーにパイプしないでください。

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

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


^ path> にリポジトリがあるかのように git を実行したい場合は、git -C <path> を使用します。

--work-tree=<path>

ワーキングツリーのパスを設定します。絶対パスまたは現在の作業ディレクトリからの相対パスにすることができます。これは、GIT_WORK_TREE 環境変数を設定するか、core.worktree 設定変数 (詳細については gitconfig(1)core.worktree を参照) を使用することによっても制御できます。

--namespace=<path>

Git 名前空間を設定します。詳細については gitnamespaces(7) を参照してください。これは、GIT_NAMESPACE 環境変数を設定することと同じです。

--bare

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

--no-replace-objects

置換リファレンスを使用して Git オブジェクトを置換しないようにします。これは、git-replace(1) の詳細を参照して、GIT_NO_REPLACE_OBJECTS 環境変数を任意の値を設定することと同じです。

--no-lazy-fetch

プロミサーリモートから必要に応じてオブジェクトをフェッチしないようにします。git cat-file -e <object> と組み合わせて使用すると、オブジェクトがローカルで利用可能かどうかを確認するのに役立ちます。これは、GIT_NO_LAZY_FETCH 環境変数を 1 に設定することと同じです。

--no-optional-locks

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

--no-advice

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

--literal-pathspecs

パス仕様をリテラルとして扱います (つまり、グロビングやパス仕様の魔法は行いません)。これは、GIT_LITERAL_PATHSPECS 環境変数を 1 に設定することと同じです。

--glob-pathspecs

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

--noglob-pathspecs

すべてのパス仕様に「リテラル」マジックを追加します。これは、GIT_NOGLOB_PATHSPECS 環境変数を 1 に設定することと同じです。個々のパス仕様でグロビングを有効にすることは、パス仕様の魔法 :(glob) を使用して行うことができます。

--icase-pathspecs

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

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

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

--attr-source=<tree-ish>

^ itattributes(5) を参照してください。ワーキングツリーではなく、<tree-ish> から gitattributes を読み取ります。これは、GIT_ATTR_SOURCE 環境変数を設定することと同じです。

GIT コマンド

Git は、高レベルの「ポーセリン」コマンドと低レベルの「プラムビング」コマンドに分割されます。


高水準コマンド (ポーセリン)

ポーセリンコマンドは、主要コマンドと、いくつかの補助的なユーザーユーティリティに分けられます。

主要ポーセリンコマンド

git-add(1)

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

git-am(1)

メールボックスからパッチのシリーズを適用します。

git-archive(1)

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

git-backfill(1)

部分的なクローンから不足しているオブジェクトをダウンロードします。

git-bisect(1)

二分探索を使用して、バグを導入したコミットを見つけます。

git-branch(1)

ブランチをリスト、作成、または削除します。

git-bundle(1)

オブジェクトとリファレンスをアーカイブによって移動します。

git-checkout(1)

ブランチを切り替えたり、ワーキングツリーのファイルを復元したりします。

git-cherry-pick(1)

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

git-citool(1)

git-commit のグラフィカル代替ツール。

git-clean(1)

ワーキングツリーから追跡されていないファイルを削除します。

git-clone(1)

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

git-commit(1)

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

git-describe(1)

利用可能なリファレンスに基づいて、オブジェクトに人間が読める名前を付けます。

git-diff(1)

コミット間の変更、コミットとワーキングツリーなど、変更を表示します。

git-fetch(1)

別のリポジトリからオブジェクトとリファレンスをダウンロードします。

git-format-patch(1)

電子メールで送信するためのパッチを準備します。

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)

低レベルでrefにアクセスする。

git-remote(1)

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

git-repack(1)

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

git-replace(1)

オブジェクトを置き換えるrefを作成、リスト表示、削除する。

インターロゲーター:

git-annotate(1)

ファイルの行にコミット情報を注釈する。

git-blame(1)

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

git-bugreport(1)

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

git-count-objects(1)

パックされていないオブジェクトの数とディスク使用量をカウントする。

git-diagnose(1)

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

git-difftool(1)

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

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

他との連携

これらのコマンドは、外部のSCMや、メール経由で他の人と連携するために使用される。

git-archimport(1)

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

git-cvsexportcommit(1)

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

git-cvsimport(1)

他の人が嫌うSCMからデータをサルベージする。

git-cvsserver(1)

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

git-imap-send(1)

stdinからのパッチのコレクションをIMAPフォルダに送信する。

git-p4(1)

Perforceリポジトリからインポートおよび送信する。

git-quiltimport(1)

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

git-request-pull(1)

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

git-send-email(1)

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

git-svn(1)

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

リセット、復元、およびリバート

git reset、git restore、git revertという、名前が似ている3つのコマンドがある。

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

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

git-reset(1)は、ブランチを更新し、ブランチに追加または削除するコミットを移動する。この操作はコミット履歴を変更する。

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

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

Git には独自のポーセリンレイヤーがありますが、そのローレベルコマンドは、代替ポーセリンの開発をサポートするのに十分です。そのようなポーセリンの開発者は、まず git-update-index(1) および git-read-tree(1) について読むことから始めることができます。

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

次の説明では、ローレベルコマンドを、リポジトリ、インデックス、およびワーキングツリーのオブジェクトを操作するコマンド、オブジェクトを照会および比較するコマンド、およびリポジトリ間でオブジェクトと参照を移動するコマンドに分類します。

操作コマンド

git-apply(1)
ファイルおよび/またはインデックスにパッチを適用します。

git-checkout-index(1)
インデックスからワーキングツリーにファイルをコピーします。

git-commit-graph(1)
Git commit-graph ファイルを書き込み、検証します。

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)
EXPERIMENTAL: 新しいベースでコミットをリプレイします。ベアリポジトリでも動作します。

git-symbolic-ref(1)
シンボリック参照を読み取り、変更、および削除します。

git-unpack-objects(1)
パックされたアーカイブからオブジェクトを解凍します。

git-update-index(1)
ワーキングツリーのファイルの内容をインデックスに登録します。

git-update-ref(1)
参照に格納されているオブジェクト名を安全に更新します。

git-write-tree(1)
現在のインデックスからツリーオブジェクトを作成します。

照会コマンド

git-cat-file(1)
リポジトリオブジェクトの内容または詳細を提供します。

git-cherry(1)
まだ上流に適用されていないコミットを見つけます。

git-diff-files(1)
ワーキングツリーとインデックスのファイルを比較します。

git-diff-index(1)
ツリーをワーキングツリーまたはインデックスと比較します。

git-diff-pairs(1)
提供された Blob ペアのコンテンツとモードを比較します。

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は、リポジトリごとおよびユーザーごとにカスタマイズを保存するために、単純なテキスト形式を使用します。このような構成ファイルは次のようになります。

#
# '#'または';'の文字はコメントを示します。
#

; コア変数
[core]
; ファイルモードを信頼しない
filemode = false

; ユーザーID
[user]
name = "Junio C Hamano"
email = "_"

さまざまなコマンドは、構成ファイルから読み取り、それに応じて動作を調整します。git-config(1)は、リストと構成メカニズムの詳細です。

識別子用語

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

<blob>
blobオブジェクト名を示します。

<tree>
treeオブジェクト名を示します。

<commit>
commitオブジェクト名を示します。

<tree-ish>
tree、commit、またはtagオブジェクト名を示します。<tree-ish>引数を受け取るコマンドは、最終的に<tree>オブジェクト上で動作することを目的としていますが、<commit>および<tag>オブジェクトを自動的に参照して、それらが指す<tree>オブジェクトを取得します。

<commit-ish>

コミットまたはタグオブジェクトの名前を示します。<commit-ish>引数を受け取るコマンドは、最終的に<commit>オブジェクトに対して操作を行いますが、<commit>を指す<tag>オブジェクトを自動的に参照します。 オブジェクトタイプが必要であることを示します。現在、blob、tree、commit、またはtagのいずれかです。 \ ファイル名を示します。ほぼ常に、GIT_INDEX_FILEが記述するツリー構造のルートからの相対パスです。

シンボリック識別子

Gitコマンドで<object>のいずれかを受け入れる場合、次のシンボリック表記も使用できます。 HEAD 現在のブランチのヘッドを示します。 有効なタグ名(つまり、refs/tags/<tag>参照)。 有効なヘッド名(つまり、refs/heads/<head>参照)。

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

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

^ itrepository-layout(5)ドキュメントを参照してください。

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

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

用語

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

環境変数

さまざまなGitコマンドは、環境変数に注意を払い、その動作を変更します。環境変数で「ブール値」とマークされているものは、ブール値の構成変数と同じように値を持ちます。つまり、「true」、「yes」、「on」、および正の数は「yes」として扱われ、「false」、「no」、「off」、および「0」は「no」として扱われます。

以下は変数です。

システム

HOME

ユーザーのホームディレクトリへのパスを指定します。Windowsでは、設定されていない場合、Gitはプロセス環境変数を$HOMEDRIVE$HOMEPATH(両方の$HOMEDRIVE$HOMEPATHが存在する場合)、または$USERPROFILE$USERPROFILEが存在する場合)に設定します。

Gitリポジトリ

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

GIT_INDEX_FILE

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

GIT_INDEX_VERSION

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

GIT_OBJECT_DIRECTORY

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

GIT_ALTERNATE_OBJECT_DIRECTORIES

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


「"」(二重引用符)で始まるエントリは、Cスタイルの引用パスとして解釈され、先頭と末尾の二重引用符が削除され、バックスラッシュのエスケープが考慮されます。例: "path-with-\"-and-:-in-it":vanilla-path という値は、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 名前空間を設定します。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_DEFAULT_HASH
この変数が設定されている場合、新しいリポジトリのデフォルトのハッシュアルゴリズムがこの値に設定されます。この値はクローン時には無視され、リモートリポジトリの設定が常に使用されます。デフォルトは "sha1" です。git-init(1) の --object-format を参照してください。

GIT_DEFAULT_REF_FORMAT
この変数が設定されている場合、新しいリポジトリのデフォルトの参照バックエンド形式がこの値に設定されます。デフォルトは "files" です。git-init(1) の --ref-format を参照してください。

Git コミット

GIT_AUTHOR_NAME
コミットオブジェクトまたはタグオブジェクトを作成するとき、またはリファログを書き込むときに、作成者 ID で使用される人間が判読できる名前です。user.name および author.name 構成設定をオーバーライドします。

GIT_AUTHOR_EMAIL

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

GIT_AUTHOR_DATE

コミットまたはタグオブジェクトの作成時、またはリファログの書き込み時に、作成者IDで使用される日付。有効な形式については、git-commit(1)を参照してください。

GIT_COMMITTER_NAME

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

GIT_COMMITTER_EMAIL

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

GIT_COMMITTER_DATE

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

EMAIL

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

Git Diffs

GIT_DIFF_OPTS

有効な設定は--unified=?または-u?のみで、統合されたdiffを作成するときに表示されるコンテキスト行数を設定します。これは、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>-hex

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

<old|new>-mode

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

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

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

^ IT_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
パスの総数。

other
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) と gitconfig(1) の sequence.editor オプションも参照してください。

GIT_SSH、GIT_SSH_COMMAND
これらの環境変数のいずれかを設定すると、git fetch および git 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 が自動的に検出する方法を上書きします。この変数は、同じ目的で使用される config 設定 ssh.variant を上書きします。

GIT_SSL_NO_VERIFY
この環境変数を設定してエクスポートすると、Git は 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-list、git log、git check-attr、および git 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_TRACE2

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

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

変数を 2 より大きく 10 未満(排他的)の整数値に設定すると、Git はこの値を開いているファイル記述子として解釈し、トレースメッセージをこのファイル記述子に書き込もうとします。

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

さらに、変数を af_unix:[<ソケットタイプ>:]<絶対パス名> に設定すると、Git はパスを Unix ドメインソケットとして開こうとします。ソケットタイプは、ストリームまたは dgram のいずれかです。

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

完全な詳細については、Trace2 のドキュメント[2]を参照してください。

GIT_TRACE2_EVENT

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

GIT_TRACE2_PERF

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


GIT_TRACE_REDACT
デフォルトでは、トレースが有効になっている場合、GitはCookieの値、"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`出力から受け取ったパスなど)に役立つことがあります。

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

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

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

GIT_NO_LAZY_FETCH
このブール型の環境変数をtrueに設定すると、Gitはプロミサーリモートから必要なオブジェクトをオンデマンドで遅延フェッチしないように指示します。

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

GIT_REF_PARANOIA
このブール型の環境変数をfalseに設定すると、リファレンスのリストを反復処理するときに、壊れたリファレンスまたは名前が正しくないリファレンスを無視します。通常、Gitはこのようなリファレンスを含めようとしますが、これにより一部の操作が失敗する可能性があります。通常、破壊的な操作(たとえば、`git-prune(1)`)は、壊れたリファレンスを無視するのではなく(したがって、保存する価値がないと見なされる履歴がある場合)、中止する方が適切です。デフォルト値は1(つまり、壊れたリファレンスを検出し、すべての操作を中止するようにパラノイアになります)。通常、これを0に設定する必要はありませんが、破損したリポジトリからデータを復元しようとする場合に役立つことがあります。

GIT_COMMIT_GRAPH_PARANOIA
コミットグラフからコミットオブジェクトをロードするとき、Gitはオブジェクトデータベース内のオブジェクトの存在をチェックします。これは、すでに削除されたコミットへの参照を含む古いコミットグラフの問題を回避するために行われますが、パフォーマンスにペナルティが発生します。

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

GIT_ALLOW_PROTOCOL

コロンで区切られたプロトコルのリストに設定すると、protocol.allow が常に never に設定されているかのように動作し、リストにある各プロトコルに対して protocol.<name>.allowalways に設定されているかのように動作します(既存の構成を上書きします)。git-config(1)protocol.allow の説明を参照してください。

GIT_PROTOCOL_FROM_USER

このブール型の環境変数を false に設定すると、fetch/push/clone で使用されるプロトコルで、ユーザー状態に構成されているものが使用されるのを防ぎます。これは、信頼できないリポジトリからの再帰的なサブモジュールの初期化を制限したり、潜在的に信頼できない URL を git コマンドに渡すプログラムで使用するのに役立ちます。詳細については、git-config(1) を参照してください。

GIT_PROTOCOL

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

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

この構成はオプションです。変数が伝播されない場合、クライアントは元の "v0" プロトコルにフォールバックします (ただし、パフォーマンスの向上や一部の機能が利用できなくなる可能性があります)。この変数は、現在はクローンとフェッチにのみ影響します。今後のバージョンでは、プッシュにも影響する可能性があります。

GIT_OPTIONAL_LOCKS

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

GIT_REDIRECT_STDIN、GIT_REDIRECT_STDOUT、GIT_REDIRECT_STDERR

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

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


GIT_PRINT_SHA1_ELLIPSIS (非推奨)

yes に設定すると、(省略された) SHA-1 値の後に省略記号を出力します。これは、分離された HEAD の表示 (git-checkout(1)) や生の差分出力 (git-diff(1)) に影響します。 上記のケースで省略記号を出力することは、もはや適切とは見なされず、この機能は近い将来、この変数とともに削除される可能性があります。

GIT_ADVICE

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

議論

詳細は、ユーザーマニュアルの Git の概念の章[3]と gitcore-tutorial(7) で確認できます。

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

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

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

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

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

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


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

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

セキュリティ

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

ただし、.git ディレクトリ(またはそれを囲むワーキングツリー)自体が信頼できないソースから来た場合、Gitコマンドを実行することは安全ではありません。その中のコマンドは、通常どおり実行されます。

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

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

その他のドキュメント

Gitの使用を開始するためのリファレンスは、「説明」セクションにあります。以下は、初めてGitを使用するユーザーにとっては、おそらく必要以上に詳細な情報です。

ユーザーマニュアル[3]のGitの概念の章と gitcore-tutorial(7) はどちらも、Gitの基本的なアーキテクチャの紹介を提供します。

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

便利な例については、ハウツー[4]ドキュメントも参照してください。

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

CVSから移行するユーザーは、gitcvs-migration(7) を読むこともできます。

著者

GitはLinus Torvaldsによって開始され、現在はJunio C Hamanoによって保守されています。Gitメーリングリスト <_[6]> から多くの貢献がありました。https://openhub.net/p/git/contributors/summary には、より完全な貢献者リストが記載されています。

git.git 自体のクローンがある場合、git-shortlog(1) および git-blame(1) の出力は、プロジェクトの特定の部分の作成者を表示できます。

バグの報告

バグは、開発とメンテナンスが主に実行される Git メーリングリスト <_[6]> に報告してください。リストに登録していなくても、メッセージを送信できます。以前のバグ報告およびその他のディスカッションについては、https://lore.kernel.org/git でのリスト アーカイブを参照してください。

セキュリティに関連する問題は、Git セキュリティ メーリングリスト <_[7]> に非公開で報告してください。

関連項目

gittutorial(7)、gittutorial-2(7)、giteveryday(7)、gitcvs-migration(7)、gitglossary(7)、gitcoretutorial(7)、gitcli(7)、The Git User’s Manual[1]、gitworkflows(7)

GIT

git(1) スイートの一部

注意事項

    Git User’s Manual
file:///usr/share/doc/git/html/user-manual.html

    Trace2 のドキュメント
file:///usr/share/doc/git/html/technical/api-trace2.html

    ユーザーマニュアルの Git の概念に関する章
file:///usr/share/doc/git/html/user-manual.html#git-concepts

howto
file:///usr/share/doc/git/html/howto-index.html

    Git API ドキュメント
file:///usr/share/doc/git/html/technical/api-index.html

_
mailto:_

_
mailto:_