セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.50.1 変更なし
-
2.50.0
2025-06-16
- 2.49.1 変更なし
-
2.49.0
2025-03-14
- 2.48.1 → 2.48.2 変更なし
-
2.48.0
2025-01-10
- 2.47.1 → 2.47.3 変更なし
-
2.47.0
2024-10-06
- 2.46.1 → 2.46.4 変更なし
-
2.46.0
2024-07-29
- 2.45.2 → 2.45.4 変更なし
-
2.45.1
2024-04-29
-
2.45.0
2024-04-29
- 2.44.2 → 2.44.4 変更なし
-
2.44.1
2024-04-19
-
2.44.0
2024-02-23
- 2.43.5 → 2.43.7 変更なし
-
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 User’s Manual は、より詳細な導入です。
基本的な概念を習得したら、このページに戻って Git が提供するコマンドについて学習できます。個々の Git コマンドについては、「git help command」で詳細を確認できます。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>
-
設定パラメータをコマンドに渡します。指定された値は設定ファイルからの値を上書きします。
は、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 の 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 に伝える必要があります。単に Git を <path> で起動したかのように実行したい場合は、
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>
-
作業ツリーの代わりに
から 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]
-
Eメール提出用のパッチを準備する
- 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]
-
参照ログ情報を管理する
- git-refs[1]
-
refs への低レベルアクセス
- 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 からデータを救出する(人々が嫌いなSCM)
- git-cvsserver[1]
-
Git の CVS サーバーエミュレーター
- git-imap-send[1]
-
標準入力から IMAP フォルダーにパッチのコレクションを送信する
- git-p4[1]
-
Perforce リポジトリからのインポートと Perforce リポジトリへの提出
- git-quiltimport[1]
-
現在のブランチにキルトパッチセットを適用する
- 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-pairs[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]
-
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 / exclude ファイルをデバッグする
- 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]
-
差分出力の調整
- 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>
-
ツリー、コミット、またはタグオブジェクト名を示します。
引数を受け取るコマンドは、最終的に オブジェクトに対して操作を行いますが、 を指す および オブジェクトを自動的に逆参照します。 - <commit-ish>
-
コミットまたはタグオブジェクト名を示します。
引数を受け取るコマンドは、最終的に オブジェクトに対して操作を行いますが、 を指す オブジェクトを自動的に逆参照します。 - <type>
-
オブジェクトタイプが必要であることを示します。現在、
blob
、tree
、commit
、tag
のいずれかです。 - <file>
-
ファイル名を示します。
GIT_INDEX_FILE
が記述するツリー構造のルートに対する相対パスであることがほとんどです。
シンボリック識別子
任意の <object> を受け入れる任意の Git コマンドは、以下のシンボリック表記も使用できます。
オブジェクト名を指定するより完全な方法のリストについては、gitrevisions[7] の「SPECIFYING REVISIONS」セクションを参照してください。
ファイル/ディレクトリ構造
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 には2つのパスがあります:path-with-"-and-:-in-it
とvanilla-path
。 GIT_DIR
-
GIT_DIR
環境変数が設定されている場合、リポジトリのベースとしてデフォルトの.git
の代わりにそのパスが指定されます。--git-dir
コマンドラインオプションもこの値を設定します。 GIT_WORK_TREE
-
作業ツリーのルートへのパスを設定します。これは
--work-tree
コマンドラインオプションと core.worktree 設定変数でも制御できます。 GIT_NAMESPACE
-
Git 名前空間を設定します。詳細については gitnamespaces[7] を参照してください。
--namespace
コマンドラインオプションもこの値を設定します。 GIT_CEILING_DIRECTORIES
-
これはコロン区切りの絶対パスのリストである必要があります。設定されている場合、Git がリポジトリディレクトリを探す際に chdir しないディレクトリのリストです(読み込みの遅いネットワークディレクトリを除外するのに便利です)。現在の作業ディレクトリやコマンドラインまたは環境で設定された GIT_DIR は除外されません。通常、Git はこのリストのエントリを読み取り、現在のディレクトリと比較するために存在する可能性のあるシンボリックリンクを解決する必要があります。しかし、このアクセスさえ遅い場合、リストに空のエントリを追加して、後続のエントリがシンボリックリンクではなく解決する必要がないことを Git に伝えることができます。例:
GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink
。 GIT_DISCOVERY_ACROSS_FILESYSTEM
-
「.git」リポジトリディレクトリを持たないディレクトリで実行される場合、Git は親ディレクトリでそのようなディレクトリを探して作業ツリーのトップを見つけようとしますが、デフォルトではファイルシステムの境界を越えません。このブール環境変数を true に設定すると、Git にファイルシステムの境界で停止しないように指示できます。
GIT_CEILING_DIRECTORIES
と同様に、これはGIT_DIR
またはコマンドラインで明示的に設定されたリポジトリディレクトリには影響しません。 GIT_COMMON_DIR
-
この変数がパスに設定されている場合、通常 $GIT_DIR にある作業ツリー以外のファイルは、このパスから取得されます。HEAD やインデックスなどの作業ツリー固有のファイルは $GIT_DIR から取得されます。詳細は gitrepository-layout[5] および git-worktree[1] を参照してください。この変数は GIT_INDEX_FILE、GIT_OBJECT_DIRECTORY などの他のパス変数よりも優先順位が低いです。
GIT_DEFAULT_HASH
-
この変数が設定されている場合、新しいリポジトリのデフォルトのハッシュアルゴリズムは、この値に設定されます。この値はクローン時には無視され、常にリモートリポジトリの設定が使用されます。デフォルトは「sha1」です。git-init[1] の
--object-format
を参照してください。 GIT_DEFAULT_REF_FORMAT
-
この変数が設定されている場合、新しいリポジトリのデフォルトのリファレンスバックエンドフォーマットは、この値に設定されます。デフォルトは「files」です。git-init[1] の
--ref-format
を参照してください。
Git コミット
GIT_AUTHOR_NAME
-
コミットまたはタグオブジェクトを作成する際、または参照ログを書き込む際に、作者の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
-
他の関連する環境変数や設定が設定されていない場合、作者とコミッターの身元に使用されるメールアドレス。
Git Diff
GIT_DIFF_OPTS
-
有効な唯一の設定は、統合差分が作成されたときに表示されるコンテキスト行数を設定するための「--unified=?」または「-u?」です。これは、Git diff コマンドラインに渡される「-U」または「--unified」オプションの値よりも優先されます。
GIT_EXTERNAL_DIFF
-
環境変数
GIT_EXTERNAL_DIFF
が設定されている場合、それに指定されたプログラムが差分を生成するために呼び出され、Git は組み込みの差分機構を使用しません。追加、削除、または変更されたパスの場合、GIT_EXTERNAL_DIFF
は7つのパラメーターで呼び出されます。path old-file old-hex old-mode new-file new-hex new-mode
ここで
- <old|new>-file
-
<old|new> の内容を読み取るために GIT_EXTERNAL_DIFF が使用できるファイルです。
- <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が読み込まれるtreeishを設定します。
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は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
-
リファレンスデータベースに対する操作のトレースメッセージを有効にします。利用可能なトレース出力オプションについては、
GIT_TRACE
を参照してください。 GIT_TRACE_SETUP
-
Gitがセットアップフェーズを完了した後の.git、作業ツリー、現在の作業ディレクトリを出力するトレースメッセージを有効にします。利用可能なトレース出力オプションについては、
GIT_TRACE
を参照してください。 GIT_TRACE_SHALLOW
-
シャローリポジトリのフェッチ/クローンをデバッグするのに役立つトレースメッセージを有効にします。利用可能なトレース出力オプションについては、
GIT_TRACE
を参照してください。 GIT_TRACE_CURL
-
gitトランスポートプロトコルの記述情報を含む、すべての送受信データに対するcurlのフルトレースダンプを有効にします。これは、コマンドラインでcurl
--trace-ascii
を実行するのと似ています。利用可能なトレース出力オプションについては、GIT_TRACE
を参照してください。 GIT_TRACE_CURL_NO_DATA
-
curlトレースが有効な場合(上記の
GIT_TRACE_CURL
を参照)、データはダンプせず(情報行とヘッダーのみをダンプ)、データはダンプしません。 GIT_TRACE2
-
「trace2」ライブラリからのより詳細なトレースメッセージを有効にします。
GIT_TRACE2
からの出力は、人間が読めるシンプルなテキストベースの形式です。この変数が「1」、「2」、または「true」(比較は大文字小文字を区別しない)に設定されている場合、トレースメッセージはstderrに出力されます。
変数が2より大きく10未満の整数値(厳密に)に設定されている場合、Gitはこの値をオープンファイル記述子として解釈し、このファイル記述子にトレースメッセージを書き込もうとします。
あるいは、変数が絶対パス(/文字で始まる)に設定されている場合、Gitはこれをファイルパスとして解釈し、トレースメッセージをそこに追加しようとします。パスが既に存在し、ディレクトリである場合、トレースメッセージはそのディレクトリ内のファイル(プロセスごとに1つ)に書き込まれます。ファイル名はSIDの最後のコンポーネントとオプションのカウンター(ファイル名の衝突を避けるため)に従って命名されます。
さらに、変数が
af_unix:
[<socket-type>:
]<absolute-pathname>に設定されている場合、GitはパスをUnixドメインソケットとして開こうとします。ソケットタイプはstream
またはdgram
のいずれかです。変数を設定解除するか、空、"0"、または"false"(大文字小文字を区別しない)に設定すると、トレースメッセージは無効になります。
詳細については、Trace2 documentationを参照してください。
GIT_TRACE2_EVENT
-
この設定は、機械解釈に適したJSONベースの形式を書き込みます。利用可能なトレース出力オプションについては
GIT_TRACE2
を、詳細についてはTrace2 documentationを参照してください。 GIT_TRACE2_PERF
-
GIT_TRACE2
で利用可能なテキストベースのメッセージに加えて、この設定はネストされた領域を理解するためのカラムベースの形式を書き込みます。利用可能なトレース出力オプションについてはGIT_TRACE2
を、詳細についてはTrace2 documentationを参照してください。 GIT_TRACE_REDACT
-
デフォルトでは、トレースが有効になっている場合、Gitはクッキーの値、「Authorization:」ヘッダー、「Proxy-Authorization:」ヘッダー、およびパックファイルURIを編集します。このブール環境変数をfalseに設定すると、この編集を防ぐことができます。
GIT_NO_REPLACE_OBJECTS
-
この環境変数を設定してエクスポートすると、Gitは置換refを無視し、Gitオブジェクトを置換しません。
GIT_LITERAL_PATHSPECS
-
このブール環境変数をtrueに設定すると、Gitはすべてのパススペックをグロブパターンとしてではなく、リテラルとして扱います。例えば、
GIT_LITERAL_PATHSPECS=1
git
log
--
*.c'
を実行すると、グロブ*.c
に一致するパスではなく、パス*.c
に触れるコミットを検索します。これは、Gitにリテラルパスを供給している場合(例:以前にgit
ls-tree
、--raw
差分出力などで与えられたパスなど)に必要となるかもしれません。 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を無視します。通常、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
状態に設定されているフェッチ/プッシュ/クローンで使用されるプロトコルが禁止されます。これは、信頼できないリポジトリからの再帰的なサブモジュール初期化を制限したり、潜在的に信頼できない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])および生の差分出力(git-diff[1])に影響します。前述のケースで省略記号を出力することはもはや適切とは見なされておらず、そのサポートは(変数とともに)近い将来削除される可能性があります。 GIT_ADVICE
-
0
に設定すると、すべてのアドバイスメッセージが無効になります。これらのメッセージは、人間のユーザーが問題のある状況から抜け出したり、新機能を利用したりするのに役立つヒントを提供することを目的としています。ユーザーはadvice.*
設定キーを使用して個々のメッセージを無効にできます。これらのメッセージはGitプロセスを実行するツールにとって妨げとなる可能性があるため、この変数はメッセージを無効にするために利用できます。(グローバルオプション--no-advice
も利用可能ですが、このオプションが理解されない古いGitバージョンでは失敗する可能性があります。環境変数は、それを理解しないGitバージョンでは無視されます。)
議論
以下の詳細については、ユーザーマニュアルのGit概念の章およびgitcore-tutorial[7]から入手できます。
Gitプロジェクトは通常、トップレベルに「.git」サブディレクトリを持つ作業ディレクトリで構成されます。.gitディレクトリには、とりわけ、プロジェクトの完全な履歴を表す圧縮オブジェクトデータベース、その履歴を現在の作業ツリーのコンテンツにリンクする「インデックス」ファイル、およびタグやブランチヘッドなどのその履歴への名前付きポインタが含まれています。
オブジェクトデータベースには、主に3種類のオブジェクトが含まれます。ファイルデータを保持するblob、blobや他のツリーを指してディレクトリ階層を構築するtree、そしてそれぞれ1つのtreeといくつかの親コミットを参照するcommitです。
他のシステムでは「チェンジセット」または「バージョン」と呼ばれるコミットは、プロジェクト履歴における1つのステップを表し、各親はその直前のステップを表します。複数の親を持つコミットは、独立した開発ラインのマージを表します。
すべてのオブジェクトは、その内容のSHA-1ハッシュ(通常は40桁の16進数文字列で記述される)によって命名されます。このような名前はグローバルに一意です。コミットに至る全履歴は、そのコミットのみに署名することで保証できます。この目的のために、4番目のオブジェクトタイプであるタグが提供されます。
最初に作成されたオブジェクトは個別のファイルに保存されますが、効率のために後で「パックファイル」にまとめて圧縮されることがあります。
リフと呼ばれる名前付きポインタは、履歴の興味深い箇所をマークします。リフには、オブジェクトのSHA-1名または別のリフの名前(後者は「シンボリックリフ」と呼ばれます)が含まれる場合があります。refs/head/
で始まる名前のリフには、開発中のブランチの最新のコミット(または「ヘッド」)のSHA-1名が含まれます。興味のあるタグのSHA-1名はrefs/tags/
の下に保存されます。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]のSECURITY
セクションの議論を参照してください。
さらに詳しいドキュメント
Gitの使用を開始するには、「説明」セクションの参考文献を参照してください。以下は、初めてのユーザーにとっては必要以上に詳細かもしれません。
ユーザーマニュアルのGitの概念の章とgitcore-tutorial[7]はどちらも、基盤となるGitアーキテクチャの入門書を提供しています。
推奨されるワークフローの概要については、gitworkflows[7]を参照してください。
いくつかの役立つ例については、howtoドキュメントも参照してください。
内部構造はGit API ドキュメントに記載されています。
CVSから移行するユーザーは、gitcvs-migration[7]も読むことをお勧めします。
著者
GitはLinus Torvaldsによって開始され、現在はJunio C Hamanoによってメンテナンスされています。Gitメーリングリスト <git@vger.kernel.org>から多数の貢献が寄せられています。https://openhub.net/p/git/contributors/summaryには、より完全な貢献者リストが掲載されています。
git.git自体のクローンを持っている場合、git-shortlog[1]とgit-blame[1]の出力により、プロジェクトの特定の箇所の作者を確認できます。
バグの報告
バグは、主に開発とメンテナンスが行われているGitメーリングリスト <git@vger.kernel.org>に報告してください。メッセージを送信するためにリストに登録する必要はありません。以前のバグ報告やその他の議論については、https://lore.kernel.org/gitのリストアーカイブを参照してください。
セキュリティ関連の問題は、Gitセキュリティメーリングリスト <git-security@googlegroups.com>に非公開で開示してください。
GIT
git[1]スイートの一部