セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット作成
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの慣習
- 日常的なGit
- よくある質問 (FAQ)
- 用語集
- フック
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
低レベルコマンド (プラミングコマンド)
- 2.49.0 変更なし
- 2.48.1 変更なし
-
2.48.0
2025-01-10
- 2.47.1 → 2.47.2 変更なし
-
2.47.0
2024-10-06
- 2.46.1 → 2.46.3 変更なし
-
2.46.0
2024-07-29
- 2.45.2 → 2.45.3 変更なし
-
2.45.1
2024-04-29
-
2.45.0
2024-04-29
- 2.44.2 → 2.44.3 変更なし
-
2.44.1
2024-04-19
-
2.44.0
2024-02-23
- 2.43.5 → 2.43.6 変更なし
-
2.43.4
2024-04-19
- 2.43.2 → 2.43.3 変更なし
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.42.3 → 2.42.4 変更なし
-
2.42.2
2024-04-19
-
2.42.1
2023-11-02
-
2.42.0
2023-08-21
- 2.41.2 → 2.41.3 変更なし
-
2.41.1
2024-04-19
-
2.41.0
2023-06-01
- 2.40.3 → 2.40.4 変更なし
-
2.40.2
2024-04-19
- 2.40.1 変更なし
- 2.40.0 変更なし
- 2.39.5 変更なし
-
2.39.4
2024-04-19
- 2.39.1 → 2.39.3 変更なし
-
2.39.0
2022-12-12
- 2.38.3 → 2.38.5 変更なし
-
2.38.2
2022-12-11
- 2.38.1 変更なし
-
2.38.0
2022-10-02
- 2.37.3 → 2.37.7 変更なし
-
2.37.2
2022-08-11
- 2.37.1 変更なし
-
2.37.0
2022-06-27
- 2.36.1 → 2.36.6 変更なし
-
2.36.0
2022-04-18
- 2.35.1 → 2.35.8 変更なし
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 変更なし
-
2.34.0
2021-11-15
- 2.33.3 → 2.33.8 変更なし
-
2.33.2
2022-03-23
-
2.33.1
2021-10-12
- 2.32.1 → 2.33.0 変更なし
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 変更なし
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 変更なし
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 変更なし
-
2.29.0
2020-10-19
- 2.28.1 変更なし
-
2.28.0
2020-07-27
- 2.27.1 変更なし
-
2.27.0
2020-06-01
- 2.26.1 → 2.26.3 変更なし
-
2.26.0
2020-03-22
- 2.25.2 → 2.25.5 変更なし
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.23.1 → 2.24.4 変更なし
-
2.23.0
2019-08-16
- 2.22.2 → 2.22.5 変更なし
-
2.22.1
2019-08-11
-
2.22.0
2019-06-07
- 2.20.1 → 2.21.4 変更なし
-
2.20.0
2018-12-09
- 2.19.3 → 2.19.6 変更なし
-
2.19.2
2018-11-21
- 2.19.1 変更なし
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 変更なし
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 変更なし
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
- 2.13.7 変更なし
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
-
2.7.6
2017-07-30
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
-
2.2.3
2015-09-04
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
概要
git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-lazy-fetch] [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] [--config-env=<name>=<envvar>] <command> [<args>]
説明
Gitは、高速でスケーラブルな分散型バージョン管理システムで、高レベルの操作と内部への完全なアクセスを提供する非常に豊富なコマンドセットを備えています。
始めるには gittutorial[7] を参照し、日常的に役立つ最小限のコマンドセットについては giteveryday[7] を参照してください。Gitユーザーマニュアルには、より詳細な導入が記載されています。
基本的な概念を習得したら、このページに戻ってGitが提供するコマンドを学ぶことができます。「git help command」で個々のGitコマンドについて詳しく知ることができます。gitcli[7] マニュアルページでは、コマンドラインのコマンド構文の概要を説明しています。
最新のGitドキュメントのフォーマットされ、ハイパーリンクされたコピーは、https://git.github.io/htmldocs/git.html または https://git.dokyumento.jp/docs で閲覧できます。
オプション
- -v
- --version
-
git プログラムのGitスイートバージョンを出力します。
このオプションは内部的に
git version ...
に変換され、git-version[1] コマンドと同じオプションを受け入れます。--help
も指定された場合、--version
よりも優先されます。 - -h
- --help
-
概要と最も一般的に使用されるコマンドのリストを出力します。
--all
または-a
オプションが指定された場合、利用可能なすべてのコマンドが出力されます。Gitコマンドが指定された場合、このオプションはそのコマンドのマニュアルページを表示します。マニュアルページの表示方法を制御するための他のオプションも利用できます。
git --help ...
は内部的にgit help ...
に変換されるため、詳細については git-help[1] を参照してください。 - -C <path>
-
現在のワーキングディレクトリではなく、<path> でgitが開始されたかのように実行します。複数の
-C
オプションが指定された場合、後続の各非絶対-C <path>
は、先行する-C <path>
に相対的に解釈されます。<path> が存在しても空の場合、例えば-C ""
の場合、現在のワーキングディレクトリは変更されません。このオプションは、`--git-dir` や `--work-tree` のようなパス名を期待するオプションに影響します。それらのパス名の解釈は、`-C` オプションによって生じたワーキングディレクトリに相対的に行われます。例えば、以下の呼び出しは同等です。
git --git-dir=a.git --work-tree=b -C c status git --git-dir=c/a.git --work-tree=c/b status
- -c <name>=<value>
-
コマンドに設定パラメータを渡します。指定された値は、設定ファイルからの値を上書きします。<name> は、git config でリストされるのと同じ形式 (ドットで区切られたサブキー) であると想定されます。
git -c foo.bar ...
で=
を省略しても構わず、`foo.bar` をブール値のtrueに設定します(設定ファイルで[foo]bar
がそうであるように)。イコールを含みつつ空の値(例:git -c foo.bar= ...
)にすると、`foo.bar` が空文字列に設定され、これはgit config --type=bool
によってfalse
に変換されます。 - --config-env=<name>=<envvar>
-
-c <name>=<value>
と同様に、設定変数 <name> に値を指定します。ここで <envvar> は値を取得する環境変数の名前です。-c
とは異なり、値を直接空文字列に設定するショートカットはありません。代わりに環境変数自体を空文字列に設定する必要があります。<envvar> が環境に存在しない場合、エラーとなります。<envvar> にはイコール記号を含めることはできません。これは、<name> にイコール記号が含まれる場合との曖昧さを避けるためです。これは、一時的な設定オプションをgitに渡したい場合に便利ですが、他のプロセスがコマンドライン(例:
/proc/self/cmdline
)は読み取れるが、環境(例:/proc/self/environ
)は読み取れないオペレーティングシステムでこれを行う場合に特に役立ちます。この動作はLinuxではデフォルトですが、お使いのシステムではそうではないかもしれません。機密情報が値の一部である
http.extraHeader
のような変数にはセキュリティを追加する可能性がありますが、機密情報がキーの一部となりうるurl.<base>.insteadOf
のような変数には追加しないことに注意してください。 - --exec-path[=<path>]
-
Gitのコアプログラムがインストールされているパス。これは GIT_EXEC_PATH 環境変数を設定することでも制御できます。パスが指定されない場合、git は現在の設定を出力して終了します。
- --html-path
-
GitのHTMLドキュメントがインストールされているパスを、末尾のスラッシュなしで出力し、終了します。
- --man-path
-
このバージョンのGitのマニュアルページのmanpath (
man(1)
を参照) を出力し、終了します。 - --info-path
-
このバージョンのGitを説明するInfoファイルがインストールされているパスを出力し、終了します。
- -p
- --paginate
-
標準出力がターミナルである場合、すべての出力を less (または設定されていれば $PAGER) にパイプします。これは
pager.<cmd>
設定オプションを上書きします(以下の「設定メカニズム」セクションを参照)。 - -P
- --no-pager
-
Gitの出力をページャにパイプしません。
- --git-dir=<path>
-
リポジトリ(「.git」ディレクトリ)へのパスを設定します。これは
GIT_DIR
環境変数を設定することでも制御できます。絶対パスまたは現在のワーキングディレクトリからの相対パスで指定できます。このオプション(または
GIT_DIR
環境変数)を使用して「.git」ディレクトリの場所を指定すると、「.git」サブディレクトリを持つディレクトリを見つけようとするリポジトリ探索(リポジトリとワーキングツリーのトップレベルが発見される方法)が無効になり、Gitにワーキングツリーのトップレベルにいることを伝えます。ワーキングツリーのトップレベルディレクトリにいない場合は、--work-tree=<path>
オプション(またはGIT_WORK_TREE
環境変数)を使用して、ワーキングツリーのトップレベルがどこにあるかをGitに伝える必要があります。`
` でgitが開始されたかのように実行したいだけの場合は、 git -C <path>
を使用してください。 - --work-tree=<path>
-
ワーキングツリーへのパスを設定します。絶対パスまたは現在のワーキングディレクトリからの相対パスで指定できます。これは GIT_WORK_TREE 環境変数と core.worktree 設定変数(詳細については git-config[1] の core.worktree を参照)を設定することでも制御できます。
- --namespace=<path>
-
Gitの名前空間を設定します。詳細については gitnamespaces[7] を参照してください。
GIT_NAMESPACE
環境変数を設定することと同等です。 - --bare
-
リポジトリをベアリポジトリとして扱います。GIT_DIR 環境変数が設定されていない場合、現在のワーキングディレクトリに設定されます。
- --no-replace-objects
-
Gitオブジェクトを置き換えるために代替参照を使用しません。これは
GIT_NO_REPLACE_OBJECTS
環境変数を任意の値でエクスポートすることと同等です。詳細については git-replace[1] を参照してください。 - --no-lazy-fetch
-
欠落しているオブジェクトをプロミサーリモートからオンデマンドでフェッチしません。オブジェクトがローカルで利用可能かどうかを確認するために
git cat-file -e <object>
と一緒に使用すると便利です。これはGIT_NO_LAZY_FETCH
環境変数を1
に設定することと同等です。 - --no-optional-locks
-
ロックを必要とするオプションの操作を実行しません。これは
GIT_OPTIONAL_LOCKS
を0
に設定することと同等です。 - --no-advice
-
すべての助言ヒントの表示を無効にします。
- --literal-pathspecs
-
パス指定をリテラルに扱います(つまり、グロブ展開、パス指定マジックなし)。これは
GIT_LITERAL_PATHSPECS
環境変数を1
に設定することと同等です。 - --glob-pathspecs
-
すべてのパス指定に「glob」マジックを追加します。これは
GIT_GLOB_PATHSPECS
環境変数を1
に設定することと同等です。個々のパス指定でグロブ展開を無効にするには、パス指定マジック「:(literal)」を使用できます。 - --noglob-pathspecs
-
すべてのパス指定に「literal」マジックを追加します。これは
GIT_NOGLOB_PATHSPECS
環境変数を1
に設定することと同等です。個々のパス指定でグロブ展開を有効にするには、パス指定マジック「:(glob)」を使用できます。 - --icase-pathspecs
-
すべてのパス指定に「icase」マジックを追加します。これは
GIT_ICASE_PATHSPECS
環境変数を1
に設定することと同等です。 - --list-cmds=<group>[,<group>…]
-
グループ別にコマンドをリストします。これは内部/実験的なオプションであり、将来変更または削除される可能性があります。サポートされるグループは次のとおりです: builtins, parseopt (parse-optionsを使用する組み込みコマンド), main (libexecディレクトリ内のすべてのコマンド), others (
$PATH
内のgit-プレフィックスを持つ他のすべてのコマンド), list-<category> (command-list.txtのカテゴリを参照), nohelpers (ヘルパーコマンドを除外), alias, config (config変数 completion.commands からコマンドリストを取得)。 - --attr-source=<tree-ish>
-
ワーキングツリーの代わりに <tree-ish> から gitattributes を読み込みます。gitattributes[5] を参照してください。これは
GIT_ATTR_SOURCE
環境変数を設定することと同等です。
高レベルコマンド(ポーセリン)
ポーセリンコマンドは、メインコマンドと補助的なユーザーユーティリティに分けられます。
主なポーセリンコマンド
- 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]
-
参照への低レベルアクセス
- git-remote[1]
-
追跡対象リポジトリのセットを管理する
- git-repack[1]
-
リポジトリ内のアンパックされたオブジェクトをパックする
- git-replace[1]
-
オブジェクトを置き換える参照を作成、一覧表示、削除する
調査コマンド
- git-annotate[1]
-
ファイルの行にコミット情報を付加する
- git-blame[1]
-
ファイルの各行を最後に変更したリビジョンと作者を表示する
- git-bugreport[1]
-
ユーザーがバグレポートを提出するための情報を収集する
- git-count-objects[1]
-
アンパックされたオブジェクトの数とディスク使用量を数える
- git-diagnose[1]
-
診断情報のzipアーカイブを生成する
- git-difftool[1]
-
一般的なdiffツールを使用して変更を表示する
- git-fsck[1]
-
データベース内のオブジェクトの接続性と有効性を検証する
- git-help[1]
-
Gitに関するヘルプ情報を表示する
- git-instaweb[1]
-
gitwebでワーキングリポジトリを即座にブラウズする
- git-merge-tree[1]
-
インデックスやワーキングツリーに触れずにマージを実行する
- git-rerere[1]
-
競合したマージの記録された解決を再利用する
- git-show-branch[1]
-
ブランチとそのコミットを表示する
- git-verify-commit[1]
-
コミットのGPG署名をチェックする
- git-verify-tag[1]
-
タグのGPG署名をチェックする
- git-version[1]
-
Gitのバージョン情報を表示する
- git-whatchanged[1]
-
各コミットが導入する差分とともにログを表示する
- gitweb[1]
-
Gitウェブインターフェース(Gitリポジトリへのウェブフロントエンド)
他のシステムとの連携
これらのコマンドは、外部SCMや、電子メールによるパッチを介して他の人々とのやり取りを目的としています。
- git-archimport[1]
-
GNU ArchリポジトリをGitにインポートする
- git-cvsexportcommit[1]
-
単一のコミットをCVSチェックアウトにエクスポートする
- git-cvsimport[1]
-
人々が嫌う別のSCMからデータを救出する
- git-cvsserver[1]
-
Git用のCVSサーバーエミュレータ
- git-imap-send[1]
-
標準入力からIMAPフォルダにパッチのコレクションを送信する
- git-p4[1]
-
PerforceリポジトリからのインポートとPerforceリポジトリへの送信
- git-quiltimport[1]
-
現在のブランチにquilパッチセットを適用する
- git-request-pull[1]
-
保留中の変更の概要を生成する
- git-send-email[1]
-
パッチのコレクションをメールとして送信する
- git-svn[1]
-
SubversionリポジトリとGit間の双方向操作
リセット、リストア、およびリバート
似た名前のコマンドが3つあります: git reset
、git restore
、git revert
。
-
git-revert[1] は、他のコミットで行われた変更を元に戻す新しいコミットを作成することです。
-
git-restore[1] は、インデックスまたは別のコミットからワーキングツリー内のファイルを復元することです。このコマンドはブランチを更新しません。このコマンドは、インデックス内のファイルを別のコミットから復元するためにも使用できます。
-
git-reset[1] は、ブランチからコミットを追加または削除するためにチップを移動することで、ブランチを更新することです。この操作はコミット履歴を変更します。
git reset
は、インデックスを復元するためにも使用でき、git restore
と一部機能が重複します。
低レベルコマンド(プラミング)
Gitは独自のポーセリンレイヤーを含んでいますが、その低レベルコマンドは代替ポーセリンの開発をサポートするのに十分です。このようなポーセリンの開発者は、まず git-update-index[1] と git-read-tree[1] について読むことから始めるかもしれません。
これらの低レベルコマンドのインターフェース(入力、出力、オプションセット、セマンティクス)は、主にスクリプトでの使用を目的としているため、ポーセリンレベルのコマンドよりもはるかに安定していることを意図しています。一方、ポーセリンコマンドのインターフェースは、エンドユーザーエクスペリエンスを向上させるために変更される可能性があります。
以下の説明では、低レベルコマンドを、オブジェクト(リポジトリ、インデックス、ワーキングツリー内)を操作するコマンド、オブジェクトを照会および比較するコマンド、リポジトリ間でオブジェクトと参照を移動するコマンドに分類します。
操作コマンド
- git-apply[1]
-
ファイルおよび/またはインデックスにパッチを適用する
- git-checkout-index[1]
-
インデックスからワーキングツリーにファイルをコピーする
- git-commit-graph[1]
-
Gitコミットグラフファイルを書き込み、検証する
- git-commit-tree[1]
-
新しいコミットオブジェクトを作成する
- git-hash-object[1]
-
オブジェクトIDを計算し、オプションでファイルからオブジェクトを作成する
- git-index-pack[1]
-
既存のパックされたアーカイブのパックインデックスファイルを構築する
- git-merge-file[1]
-
3方向ファイルマージを実行する
- git-merge-index[1]
-
マージが必要なファイルのマージを実行する
- git-mktag[1]
-
追加の検証付きでタグオブジェクトを作成する
- git-mktree[1]
-
ls-tree形式のテキストからツリーオブジェクトを構築する
- git-multi-pack-index[1]
-
マルチパックインデックスを書き込み、検証する
- git-pack-objects[1]
-
オブジェクトのパックされたアーカイブを作成する
- git-prune-packed[1]
-
パックファイルに既に存在する余分なオブジェクトを削除する
- git-read-tree[1]
-
ツリー情報をインデックスに読み込む
- git-replay[1]
-
実験的: 新しいベースでコミットをリプレイする。ベアリポジトリでも動作。
- git-symbolic-ref[1]
-
シンボリック参照を読み取り、変更、削除する
- git-unpack-objects[1]
-
パックされたアーカイブからオブジェクトをアンパックする
- git-update-index[1]
-
ワーキングツリーのファイル内容をインデックスに登録する
- git-update-ref[1]
-
参照に格納されているオブジェクト名を安全に更新する
- git-write-tree[1]
-
現在のインデックスからツリーオブジェクトを作成する
調査コマンド
- git-cat-file[1]
-
リポジトリオブジェクトの内容または詳細を提供する
- git-cherry[1]
-
アップストリームにまだ適用されていないコミットを見つける
- git-diff-files[1]
-
ワーキングツリーとインデックスのファイルを比較する
- git-diff-index[1]
-
ツリーをワーキングツリーまたはインデックスと比較する
- git-diff-tree[1]
-
2つのツリーオブジェクトを介して見つかったブロブの内容とモードを比較する
- git-for-each-ref[1]
-
各参照に関する情報を出力する
- git-for-each-repo[1]
-
リポジトリのリストに対してGitコマンドを実行する
- git-get-tar-commit-id[1]
-
git-archiveを使用して作成されたアーカイブからコミットIDを抽出する
- git-ls-files[1]
-
インデックスおよびワーキングツリー内のファイルに関する情報を表示する
- git-ls-remote[1]
-
リモートリポジトリ内の参照を一覧表示する
- git-ls-tree[1]
-
ツリーオブジェクトの内容を一覧表示する
- git-merge-base[1]
-
マージにとって可能な限り最適な共通祖先を見つける
- git-name-rev[1]
-
指定されたリビジョンのシンボリック名を見つける
- git-pack-redundant[1]
-
冗長なパックファイルを見つける
- git-rev-list[1]
-
コミットオブジェクトを逆時系列順にリストする
- git-rev-parse[1]
-
パラメータを選別・加工する
- git-show-index[1]
-
パックされたアーカイブインデックスを表示する
- git-show-ref[1]
-
ローカルリポジトリ内の参照を一覧表示する
- git-unpack-file[1]
-
ブロブの内容を含む一時ファイルを作成する
- 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]
-
作者/コミッター名および/またはEメールアドレスをマップする
- gitmodules[5]
-
サブモジュールのプロパティの定義
- gitrepository-layout[5]
-
Gitリポジトリレイアウト
- gitrevisions[7]
-
Gitのリビジョンと範囲の指定
ファイル形式、プロトコル、およびその他の開発者インターフェース
このドキュメントでは、ファイル形式、ワイヤプロトコル、およびその他のGit開発者インターフェースについて説明します。git-help[1] の --developer-interfaces
を参照してください。
- gitformat-bundle[5]
-
バンドルファイル形式
- gitformat-chunk[5]
-
チャンクベースのファイル形式
- gitformat-commit-graph[5]
-
Gitコミットグラフ形式
- gitformat-index[5]
-
Gitインデックス形式
- gitformat-pack[5]
-
Gitパック形式
- gitformat-signature[5]
-
Git暗号署名形式
- gitprotocol-capabilities[5]
-
プロトコルv0およびv1の機能
- gitprotocol-common[5]
-
さまざまなプロトコルに共通の事柄
- gitprotocol-http[5]
-
Git HTTPベースプロトコル
- gitprotocol-pack[5]
-
パックがネットワーク経由で転送される仕組み
- gitprotocol-v2[5]
-
Gitワイヤプロトコル、バージョン2
設定メカニズム
Gitは、リポジトリごとおよびユーザーごとのカスタマイズを保存するためにシンプルなテキスト形式を使用します。このような設定ファイルは次のようになります。
# # A '#' or ';' character indicates a comment. # ; core variables [core] ; Don't trust file modes filemode = false ; user identity [user] name = "Junio C Hamano" email = "gitster@pobox.com"
さまざまなコマンドが設定ファイルを読み込み、それに応じて動作を調整します。設定メカニズムのリストと詳細については、git-config[1] を参照してください。
識別子用語
- <object>
-
あらゆる種類のオブジェクトのオブジェクト名を示します。
- <blob>
-
ブロブオブジェクト名を示します。
- <tree>
-
ツリーオブジェクト名を示します。
- <commit>
-
コミットオブジェクト名を示します。
- <tree-ish>
-
ツリー、コミット、またはタグオブジェクト名を示します。<tree-ish> 引数を取るコマンドは、最終的に <tree> オブジェクトを操作しようとしますが、<tree> を指す <commit> オブジェクトおよび <tag> オブジェクトを自動的に逆参照します。
- <commit-ish>
-
コミットまたはタグオブジェクト名を示します。<commit-ish> 引数を取るコマンドは、最終的に <commit> オブジェクトを操作しようとしますが、<commit> を指す <tag> オブジェクトを自動的に逆参照します。
- <type>
-
オブジェクトタイプが必要であることを示します。現在、
blob
、tree
、commit
、またはtag
のいずれかです。 - <file>
-
ファイル名を示します。ほとんどの場合、
GIT_INDEX_FILE
が記述するツリー構造のルートからの相対パスです。
シンボリック識別子
任意の <object> を受け入れるGitコマンドは、以下のシンボリック表記も使用できます。
オブジェクト名を指定するより完全な方法については、gitrevisions[7] の「リビジョンの指定」セクションを参照してください。
ファイル/ディレクトリ構造
gitrepository-layout[5] ドキュメントを参照してください。
各フックの詳細については githooks[5] を参照してください。
高レベルのSCMは、$GIT_DIR
内に追加情報を提供および管理する場合があります。
用語
gitglossary[7] を参照してください。
環境変数
さまざまなGitコマンドは環境変数に注意を払い、その動作を変更します。「ブール値」とマークされた環境変数は、ブール値の設定変数と同じ方法で値を取ります。つまり、「true」、「yes」、「on」、および正の数値は「yes」と見なされ、「false」、「no」、「off」、および「0」は「no」と見なされます。
変数は以下のとおりです
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がリポジトリディレクトリを探す際に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やindexなどのワーキングツリー固有のファイルは $GIT_DIR から取得されます。詳細については gitrepository-layout[5] および git-worktree[1] を参照してください。この変数は、GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY などの他のパス変数よりも優先度が低いです。
-
GIT_DEFAULT_HASH
-
この変数が設定されている場合、新しいリポジトリのデフォルトのハッシュアルゴリズムがこの値に設定されます。この値はクローン時には無視され、常にリモートリポジトリの設定が使用されます。デフォルトは「sha1」です。git-init[1] の
--object-format
を参照してください。 -
GIT_DEFAULT_REF_FORMAT
-
この変数が設定されている場合、新しいリポジトリのデフォルトの参照バックエンド形式がこの値に設定されます。デフォルトは「files」です。git-init[1] の
--ref-format
を参照してください。
Gitコミット
-
GIT_AUTHOR_NAME
-
コミットまたはタグオブジェクトを作成する際、またはreflogを書き込む際に、作者識別に使われる人間が読める名前です。
user.name
およびauthor.name
の設定を上書きします。 -
GIT_AUTHOR_EMAIL
-
コミットまたはタグオブジェクトを作成する際、またはreflogを書き込む際に、作者識別に使われるメールアドレスです。
user.email
およびauthor.email
の設定を上書きします。 -
GIT_AUTHOR_DATE
-
コミットまたはタグオブジェクトを作成する際、またはreflogを書き込む際に、作者識別に使われる日付です。有効なフォーマットについては git-commit[1] を参照してください。
-
GIT_COMMITTER_NAME
-
コミットまたはタグオブジェクトを作成する際、またはreflogを書き込む際に、コミッター識別に使われる人間が読める名前です。
user.name
およびcommitter.name
の設定を上書きします。 -
GIT_COMMITTER_EMAIL
-
コミットまたはタグオブジェクトを作成する際、またはreflogを書き込む際に、作者識別に使われるメールアドレスです。
user.email
およびcommitter.email
の設定を上書きします。 -
GIT_COMMITTER_DATE
-
コミットまたはタグオブジェクトを作成する際、またはreflogを書き込む際に、コミッター識別に使われる日付です。有効なフォーマットについては git-commit[1] を参照してください。
-
EMAIL
-
他の関連する環境変数または設定が設定されていない場合、作者およびコミッターの識別に使われるメールアドレスです。
Gitの差分
-
GIT_DIFF_OPTS
-
有効な設定は、統合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
-
は40桁の16進数SHA-1ハッシュであり、
- <old|new>-mode
-
はファイルモードの8進数表現です。
ファイルパラメータは、ユーザーのワーキングファイル(例: 「git-diff-files」の
new-file
)、/dev/null
(例: 新しいファイルが追加された場合のold-file
)、または一時ファイル(例: インデックス内のold-file
)を指すことができます。GIT_EXTERNAL_DIFF
は一時ファイルの解除について気にする必要はありません。GIT_EXTERNAL_DIFF
の終了時に削除されます。マージされていないパスの場合、
GIT_EXTERNAL_DIFF
は1つのパラメータ <path> で呼び出されます。GIT_EXTERNAL_DIFF
が呼び出される各パスに対して、2つの環境変数GIT_DIFF_PATH_COUNTER
とGIT_DIFF_PATH_TOTAL
が設定されます。 -
GIT_EXTERNAL_DIFF_TRUST_EXIT_CODE
-
このブール型環境変数がtrueに設定されている場合、
GIT_EXTERNAL_DIFF
コマンドは、入力ファイルが等しいと見なす場合は終了コード0を、異なる見なす場合は1を返すことが期待されます(diff(1)
と同様)。デフォルトであるfalseに設定されている場合、コマンドは等価性に関わらず終了コード0を返すことが期待されます。それ以外の終了コードはGitに致命的なエラーを報告させます。 -
GIT_DIFF_PATH_COUNTER
-
各パスに対して1ずつ増加する1ベースのカウンター。
-
GIT_DIFF_PATH_TOTAL
-
パスの総数。
その他
-
GIT_MERGE_VERBOSITY
-
再帰的なマージ戦略によって表示される出力の量を制御する数値です。merge.verbosity を上書きします。git-merge[1] を参照してください。
-
GIT_PAGER
-
この環境変数は
$PAGER
を上書きします。空文字列または「cat」に設定されている場合、Gitはページャを起動しません。git-config[1] のcore.pager
オプションも参照してください。 -
GIT_PROGRESS_DELAY
-
オプションの進捗インジケータを表示する前に何秒遅延させるかを制御する数値です。デフォルトは2秒です。
-
GIT_EDITOR
-
この環境変数は
$EDITOR
および$VISUAL
を上書きします。インタラクティブモードでエディタを起動する必要がある場合、いくつかのGitコマンドによって使用されます。git-var[1] および git-config[1] のcore.editor
オプションも参照してください。 -
GIT_SEQUENCE_EDITOR
-
この環境変数は、インタラクティブなリベースのToDoリストを編集する際に、設定されたGitエディタを上書きします。git-rebase[1] および git-config[1] の
sequence.editor
オプションも参照してください。 -
GIT_SSH
-
GIT_SSH_COMMAND
-
これらの環境変数のいずれかが設定されている場合、git 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の自動検出を上書きします。この変数は、同じ目的を果たすssh.variant
の設定を上書きします。 -
GIT_SSL_NO_VERIFY
-
この環境変数を任意の値に設定してエクスポートすると、HTTPS経由でフェッチまたはプッシュする際にGitがSSL証明書を検証しないようになります。
-
GIT_ATTR_SOURCE
-
gitattributesが読み取られるツリーイッシュを設定します。
-
GIT_ASKPASS
-
この環境変数が設定されている場合、パスワードまたはパスフレーズ(例: HTTPまたはIMAP認証用)の取得が必要なGitコマンドは、適切なプロンプトをコマンドライン引数としてこのプログラムを呼び出し、そのSTDOUTからパスワードを読み取ります。git-config[1] の
core.askPass
オプションも参照してください。 -
GIT_TERMINAL_PROMPT
-
このブール型環境変数がfalseに設定されている場合、gitはターミナルでプロンプトを表示しません(例: HTTP認証を求めるときなど)。
-
GIT_CONFIG_GLOBAL
-
GIT_CONFIG_SYSTEM
-
グローバルまたはシステムレベルの設定ファイルからではなく、指定されたファイルから設定を取得します。
GIT_CONFIG_SYSTEM
が設定されている場合、ビルド時に定義されたシステム設定ファイル(通常/etc/gitconfig
)は読み込まれません。同様に、GIT_CONFIG_GLOBAL
が設定されている場合、$HOME/.gitconfig
も$XDG_CONFIG_HOME/git/config
も読み込まれません。各レベルの設定ファイルの読み込みをスキップするには/dev/null
に設定できます。 -
GIT_CONFIG_NOSYSTEM
-
システム全体の
$(prefix)/etc/gitconfig
ファイルから設定を読み込むかどうかをスキップするかどうかです。このブール型環境変数は、$HOME
および$XDG_CONFIG_HOME
とともに使用して、厳密なスクリプトのために予測可能な環境を作成したり、権限を持つ誰かが修正するのを待つ間、バグのある/etc/gitconfig
ファイルの使用を一時的に回避するためにtrueに設定したりできます。 -
GIT_FLUSH
-
このブール型環境変数がtrueに設定されている場合、git blame(インクリメンタルモード)、git rev-list、git log、git check-attr、git check-ignore などのコマンドは、各レコードがフラッシュされた後、出力ストリームのフラッシュを強制します。この変数がfalseに設定されている場合、これらのコマンドの出力は完全にバッファリングされたI/Oを使用して行われます。この環境変数が設定されていない場合、Gitは標準出力がファイルにリダイレクトされているかどうかに基づいて、バッファリングまたはレコード指向のフラッシュを選択します。
-
GIT_TRACE
-
エイリアスの展開、組み込みコマンドの実行、外部コマンドの実行など、一般的なトレースメッセージを有効にします。
この変数が「1」、「2」、または「true」(大文字小文字を区別しない比較)に設定されている場合、トレースメッセージは標準エラー出力に表示されます。
変数が2より大きく10より小さい(厳密に)整数値に設定されている場合、Gitはこの値をオープンされたファイルディスクリプタとして解釈し、このファイルディスクリプタにトレースメッセージを書き込もうとします。
あるいは、変数が絶対パス(
/
文字で始まる)に設定されている場合、Gitはこれをファイルパスとして解釈し、トレースメッセージをそのファイルに追記しようとします。変数を設定解除するか、空、"0"、または "false"(大文字小文字を区別しない)に設定すると、トレースメッセージが無効になります。
-
GIT_TRACE_FSMONITOR
-
ファイルシステムモニター拡張機能のトレースメッセージを有効にします。利用可能なトレース出力オプションについては
GIT_TRACE
を参照してください。 -
GIT_TRACE_PACK_ACCESS
-
任意のパックへのすべてのアクセスに対するトレースメッセージを有効にします。各アクセスについて、パックファイル名とパック内のオフセットが記録されます。これは、パック関連のパフォーマンス問題のトラブルシューティングに役立つ場合があります。利用可能なトレース出力オプションについては
GIT_TRACE
を参照してください。 -
GIT_TRACE_PACKET
-
特定のプログラムに出入りするすべてのパケットのトレースメッセージを有効にします。これは、オブジェクトネゴシエーションやその他のプロトコル問題のデバッグに役立ちます。「PACK」で始まるパケットではトレースがオフになります(ただし、以下の
GIT_TRACE_PACKFILE
を参照)。利用可能なトレース出力オプションについてはGIT_TRACE
を参照してください。 -
GIT_TRACE_PACKFILE
-
特定のプログラムによって送受信されるパックファイルのトレースを有効にします。他のトレース出力とは異なり、このトレースは逐語的です。ヘッダーはなく、バイナリデータの引用符もありません。ほとんどの場合、端末に表示したり、他のトレース出力と混ぜたりするのではなく、ファイルに直接出力したいでしょう(例:
GIT_TRACE_PACKFILE=/tmp/my.pack
)。これは現在、クローンとフェッチのクライアントサイドでのみ実装されていることに注意してください。
-
GIT_TRACE_PERFORMANCE
-
各Gitコマンドの合計実行時間など、パフォーマンス関連のトレースメッセージを有効にします。利用可能なトレース出力オプションについては
GIT_TRACE
を参照してください。 -
GIT_TRACE_REFS
-
refデータベースでの操作に関するトレースメッセージを有効にします。利用可能なトレース出力オプションについては、
GIT_TRACE
を参照してください。 -
GIT_TRACE_SETUP
-
Gitのセットアップ段階が完了した後、.git、作業ツリー、および現在の作業ディレクトリを出力するトレースメッセージを有効にします。利用可能なトレース出力オプションについては、
GIT_TRACE
を参照してください。 -
GIT_TRACE_SHALLOW
-
シャローリポジトリのフェッチ/クローンをデバッグするのに役立つトレースメッセージを有効にします。利用可能なトレース出力オプションについては、
GIT_TRACE
を参照してください。 -
GIT_TRACE_CURL
-
Gitトランスポートプロトコルにおける、記述情報を含むすべての送受信データのcurlによる完全なトレースダンプを有効にします。これはコマンドラインでcurl
--trace-ascii
を実行するのと似ています。利用可能なトレース出力オプションについては、GIT_TRACE
を参照してください。 -
GIT_TRACE_CURL_NO_DATA
-
curlトレースが有効な場合(上記の
GIT_TRACE_CURL
を参照)、データをダンプしません(つまり、情報行とヘッダーのみをダンプします)。 -
GIT_TRACE2
-
「trace2」ライブラリからのより詳細なトレースメッセージを有効にします。
GIT_TRACE2
からの出力は、人間が読みやすいシンプルなテキストベースの形式です。この変数が「1」、「2」、または「true」(大文字小文字を区別しない比較)に設定されている場合、トレースメッセージは標準エラー出力に表示されます。
変数が2より大きく10より小さい(厳密に)整数値に設定されている場合、Gitはこの値をオープンされたファイルディスクリプタとして解釈し、このファイルディスクリプタにトレースメッセージを書き込もうとします。
あるいは、変数が絶対パス(/文字で始まる)に設定されている場合、Gitはこれをファイルパスとして解釈し、トレースメッセージをそのパスに追加しようとします。そのパスが既に存在しディレクトリである場合、トレースメッセージはそのディレクトリ内のファイル(プロセスごとに1つ)に書き込まれ、SIDの最後のコンポーネントとオプションのカウンター(ファイル名の衝突を避けるため)に基づいて名前が付けられます。
さらに、変数が
af_unix:[<socket-type>:]<absolute-pathname>
に設定されている場合、GitはそのパスをUnixドメインソケットとして開こうとします。ソケットタイプはstream
またはdgram
のいずれかです。変数を設定解除するか、空、"0"、または "false"(大文字小文字を区別しない)に設定すると、トレースメッセージが無効になります。
詳細については、Trace2のドキュメントを参照してください。
-
GIT_TRACE2_EVENT
-
この設定は、機械による解釈に適したJSONベースの形式で書き込みます。利用可能なトレース出力オプションについては
GIT_TRACE2
を、詳細についてはTrace2のドキュメントを参照してください。 -
GIT_TRACE2_PERF
-
GIT_TRACE2
で利用可能なテキストベースのメッセージに加え、この設定はネスト領域を理解するためのカラムベースの形式で書き込みます。利用可能なトレース出力オプションについてはGIT_TRACE2
を、詳細についてはTrace2のドキュメントを参照してください。 -
GIT_TRACE_REDACT
-
デフォルトでは、トレースが有効になると、Gitはクッキー、"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はすべてのパススペックをグロブパターン(「glob」マジックとも呼ばれる)として扱います。
-
GIT_NOGLOB_PATHSPECS
-
このブール環境変数をtrueに設定すると、Gitはすべてのパススペックをリテラル(「literal」マジックとも呼ばれる)として扱います。
-
GIT_ICASE_PATHSPECS
-
このブール環境変数をtrueに設定すると、Gitはすべてのパススペックを大文字と小文字を区別しないものとして扱います。
-
GIT_NO_LAZY_FETCH
-
このブール環境変数をtrueに設定すると、Gitは要求に応じてプロミサーリモートから不足しているオブジェクトを遅延フェッチしないように指示されます。
-
GIT_REFLOG_ACTION
-
refが更新されると、refの古い値と新しい値に加えて、refが更新された理由(通常はrefを更新した高レベルコマンドの名前)を追跡するためにreflogエントリが作成されます。スクリプト化されたPorcelainコマンドは、エンドユーザーによってトップレベルコマンドとして呼び出されたときに、
git-sh-setup
のset_reflog_action
ヘルパー関数を使用して、その名前をこの変数に設定し、reflogの本体に記録することができます。 -
GIT_REF_PARANOIA
-
このブール環境変数がfalseに設定されている場合、refのリストを反復処理する際に、破損したrefや不正な名前のrefは無視されます。通常、Gitはこれらのrefを含めようとし、その結果、一部の操作が失敗する可能性があります。これは通常好ましい動作です。なぜなら、破壊的な可能性のある操作(例:git-prune[1])は、破損したrefを無視する(そして、それらが指す履歴を保存する価値がないと見なす)よりも、中断する方が良いからです。デフォルト値は
1
です(つまり、すべての操作の検出と中断に偏執的になります)。通常、これを0
に設定する必要はありませんが、破損したリポジトリからデータをサルベージしようとするときに役立つ場合があります。 -
GIT_COMMIT_GRAPH_PARANOIA
-
コミットグラフからコミットオブジェクトを読み込む際、Gitはオブジェクトデータベース内のオブジェクトの存在チェックを実行します。これは、既に削除されたコミットへの参照を含む古いコミットグラフによる問題を回避するために行われますが、パフォーマンスの低下を伴います。
デフォルトは「false」であり、前述の動作を無効にします。これを「true」に設定すると、存在チェックが有効になり、パフォーマンスを犠牲にして、古いコミットがコミットグラフから返されることがなくなります。
-
GIT_ALLOW_PROTOCOL
-
コロン区切りのプロトコルリストに設定されている場合、
protocol.allow
がnever
に設定され、リストされた各プロトコルがprotocol.<name>.allow
をalways
に設定されているかのように動作します(既存の設定を上書きします)。詳細については、git-config[1]のprotocol.allow
の説明を参照してください。 -
GIT_PROTOCOL_FROM_USER
-
このブール環境変数をfalseに設定すると、
user
状態に設定されているfetch/push/cloneで使用されるプロトコルが防止されます。これは、信頼できないリポジトリからの再帰的なサブモジュール初期化を制限する場合や、潜在的に信頼できないURLをGitコマンドに供給するプログラムにとって有用です。詳細については、git-config[1]を参照してください。 -
GIT_PROTOCOL
-
内部使用のみ。ワイヤプロトコルのハンドシェイクに使用されます。オプションの値<key>[=<value>]を持つ、コロン:区切りのキーリストが含まれます。未知のキーと値の存在は無視されなければなりません。
一部のトランスポートを介してこの変数を渡すために、サーバーが設定を必要とする場合があることに注意してください。ローカルリポジトリ(つまり、
file://
またはファイルシステムパス)にアクセスする場合、およびgit://
プロトコルを介してアクセスする場合は、自動的に伝播されます。git-over-httpの場合、ほとんどの設定で自動的に機能するはずですが、git-http-backend[1]の議論を参照してください。git-over-sshの場合、sshサーバーはクライアントがこの変数を渡すことを許可するように設定する必要がある場合があります(例:OpenSSHでAcceptEnv GIT_PROTOCOL
を使用する)。この設定はオプションです。変数が伝播されない場合、クライアントは元の「v0」プロトコルにフォールバックします(ただし、一部のパフォーマンス改善や機能を利用できない可能性があります)。この変数は現在、クローンとフェッチのみに影響します。プッシュにはまだ使用されていません(しかし、将来的に使用される可能性があります)。
-
GIT_OPTIONAL_LOCKS
-
このブール環境変数がfalseに設定されている場合、Gitはロックを必要とするオプションのサブ操作を実行せずに、要求された操作を完了します。たとえば、これにより
git status
が副次的にインデックスを更新するのを防ぎます。これは、リポジトリに対する他の操作とのロック競合を引き起こしたくないバックグラウンドで実行されるプロセスにとって有用です。デフォルトは1
です。 -
GIT_REDIRECT_STDIN
-
GIT_REDIRECT_STDOUT
-
GIT_REDIRECT_STDERR
-
Windowsのみ:標準入力/出力/エラーハンドルを環境変数で指定されたパスにリダイレクトできます。これは、
CreateProcess()
を介して標準ハンドルを渡す標準的な方法がオプションではないマルチスレッドアプリケーションで特に有用です。なぜなら、その方法ではハンドルを継承可能としてマークする必要があり(結果としてすべての生成されたプロセスがそれらを継承し、通常のGit操作をブロックする可能性があるため)です。主な想定される使用例は、通信に名前付きパイプを使用することです(例:\\.\pipe\my-git-stdin-123
)。2つの特殊な値がサポートされています。
off
は対応する標準ハンドルを単純に閉じ、GIT_REDIRECT_STDERR
が2>&1
の場合、標準エラーは標準出力と同じハンドルにリダイレクトされます。 -
GIT_PRINT_SHA1_ELLIPSIS
(非推奨) -
yes
に設定されている場合、(短縮された) SHA-1値の後に省略記号が出力されます。これは、detached HEADs(git-checkout[1])の表示や、生のdiff出力(git-diff[1])に影響します。言及されたケースでの省略記号の出力は、もはや適切とは見なされておらず、近い将来(変数とともに)そのサポートが削除される可能性があります。 -
GIT_ADVICE
-
0
に設定されている場合、すべてのアドバイスメッセージを無効にします。これらのメッセージは、人間が困難な状況から抜け出したり、新機能を利用したりするのに役立つヒントを提供することを目的としています。ユーザーはadvice.*
設定キーを使用して個々のメッセージを無効にできます。これらのメッセージはGitプロセスを実行するツールにとって妨げとなる可能性があるため、この変数でメッセージを無効にできます。(--no-advice
グローバルオプションも利用可能ですが、古いGitバージョンではこのオプションが理解されない場合に失敗する可能性があります。この環境変数は、それを理解しないGitバージョンでは無視されます。)
解説
以下の詳細については、ユーザーマニュアルのGit概念の章およびgitcore-tutorial[7]を参照してください。
Gitプロジェクトは通常、トップレベルに「.git」サブディレクトリを持つ作業ディレクトリで構成されます。.gitディレクトリには、とりわけ、プロジェクトの完全な履歴を表す圧縮されたオブジェクトデータベース、その履歴を作業ツリーの現在の内容にリンクする「インデックス」ファイル、およびタグやブランチヘッドなどの履歴内の名前付きポインタが含まれています。
オブジェクトデータベースには、主に3つのタイプのオブジェクトが含まれています。ファイルデータを保持するblob、ディレクトリ階層を構築するためにblobや他のツリーを指すツリー、およびそれぞれ1つのツリーと複数の親コミットを参照するコミットです。
他のシステムで「変更セット」または「バージョン」と呼ばれるコミットは、プロジェクトの履歴における1つのステップを表し、各親は直前のステップを表します。複数の親を持つコミットは、独立した開発ラインのマージを表します。
すべてのオブジェクトは、その内容のSHA-1ハッシュによって命名され、通常は40桁の16進数文字列として記述されます。そのような名前はグローバルに一意です。コミットに至る全履歴は、そのコミットに署名するだけで保証できます。この目的のために、4番目のオブジェクトタイプであるタグが提供されます。
最初に作成されたとき、オブジェクトは個々のファイルに保存されますが、効率のために後で「パックファイル」にまとめて圧縮される場合があります。
refsと呼ばれる名前付きポインタは、履歴内の興味深い点をマークします。refはオブジェクトのSHA-1名または別のrefの名前を含むことができます(後者は「シンボリックref」と呼ばれます)。refs/head/
で始まる名前のrefは、開発中のブランチの最新のコミット(または「ヘッド」)のSHA-1名を含みます。興味のあるタグのSHA-1名はrefs/tags/
の下に保存されます。HEAD
という名前のシンボリックrefは、現在チェックアウトされているブランチの名前を含みます。
インデックスファイルは、すべてのパスのリストと、各パスについてblobオブジェクトおよび属性のセットで初期化されます。blobオブジェクトは、現在のブランチのヘッド時点でのファイルの内容を表します。属性(最終更新時刻、サイズなど)は、作業ツリー内の対応するファイルから取得されます。作業ツリーへのその後の変更は、これらの属性を比較することで見つけることができます。インデックスは新しい内容で更新でき、新しいコミットはインデックスに格納された内容から作成できます。
インデックスは、特定のパス名に対して複数のエントリ(「ステージ」と呼ばれる)を格納することもできます。これらのステージは、マージが進行中のときにファイルの様々な未マージバージョンを保持するために使用されます。
セキュリティ
一部の設定オプションとフックファイルは、Gitに任意のシェルコマンドを実行させる可能性があります。設定とフックはgit clone
でコピーされないため、信頼できないコンテンツを持つリモートリポジトリをクローンしたり、git log
で検査したりすることは一般的に安全です。
しかし、.git
ディレクトリ(またはそれを囲む作業ツリー)自体が信頼できないソースから来たものである場合、その.git
ディレクトリ内でGitコマンドを実行することは安全ではありません。その設定とフック内のコマンドは通常通り実行されます。
デフォルトでは、リポジトリがコマンドを実行するユーザー以外のユーザーによって所有されている場合、Gitは実行を拒否します。git-config[1]のsafe.directory
のエントリを参照してください。これはマルチユーザー環境で保護に役立ちますが、信頼できないリポジトリであっても、あなたが所有する信頼できないリポジトリを取得できることに注意してください(たとえば、信頼できないソースからzipファイルやtarballを抽出した場合など)。そのような場合、まず信頼できないリポジトリを「サニタイズ」する必要があります。
信頼できない.git
ディレクトリがある場合、まずgit clone --no-local
でクローンして、クリーンなコピーを取得する必要があります。Gitは、クローンやフェッチのサーバー側を処理するupload-pack
によって実行されるオプションとフックのセットを制限しますが、upload-pack
に対する攻撃表面積は広いため、これにはいくらかのリスクが伴うことに注意してください。最も安全な方法は、リポジトリを非特権ユーザーとして提供することです(git-daemon[1]、ssh、またはユーザーIDを変更するための他のツールを使用するなど)。git-upload-pack[1]のSECURITY
セクションの議論を参照してください。
さらなるドキュメント
Gitの使用を開始するには、「description」セクションの参考文献を参照してください。以下は、初めてのユーザーにとっては必要以上の詳細かもしれません。
ユーザーマニュアルのGit概念の章とgitcore-tutorial[7]はどちらも、基盤となるGitアーキテクチャの紹介を提供しています。
推奨されるワークフローの概要については、gitworkflows[7]を参照してください。
いくつかの有用な例については、howtoドキュメントも参照してください。
内部構造はGit APIドキュメントに記載されています。
CVSから移行するユーザーは、gitcvs-migration[7]も読むと良いでしょう。
著者
GitはLinus Torvaldsによって開始され、現在はJunio C Hamanoによってメンテナンスされています。多くの貢献がGitメーリングリスト<git@vger.kernel.org>からもたらされています。https://openhub.net/p/git/contributors/summaryで、貢献者のより完全なリストを確認できます。
git.git自体のクローンを持っている場合、git-shortlog[1]とgit-blame[1]の出力により、プロジェクトの特定の箇所の著者を確認できます。
バグ報告
主に開発とメンテナンスが行われているGitメーリングリスト<git@vger.kernel.org>にバグを報告してください。そこにメッセージを送信するためにリストに登録している必要はありません。以前のバグ報告やその他の議論については、https://lore.kernel.org/gitのリストアーカイブを参照してください。
セキュリティ関連の懸念事項は、Gitセキュリティメーリングリスト<git-security@googlegroups.com>に非公開で開示してください。
GIT
git[1]スイートの一部