セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
-
2.47.0
10/06/24
- 2.46.1 → 2.46.2 変更なし
-
2.46.0
07/29/24
- 2.45.2 変更なし
-
2.45.1
04/29/24
-
2.45.0
04/29/24
- 2.44.2 変更なし
-
2.44.1
04/19/24
-
2.44.0
02/23/24
- 2.43.5 変更なし
-
2.43.4
04/19/24
- 2.43.2 → 2.43.3 変更なし
-
2.43.1
02/09/24
-
2.43.0
11/20/23
- 2.42.3 変更なし
-
2.42.2
04/19/24
-
2.42.1
11/02/23
-
2.42.0
08/21/23
- 2.41.2 変更なし
-
2.41.1
04/19/24
-
2.41.0
06/01/23
- 2.40.3 変更なし
-
2.40.2
04/19/24
- 2.40.1 変更なし
- 2.40.0 変更なし
- 2.39.5 変更なし
-
2.39.4
04/19/24
- 2.39.1 → 2.39.3 変更なし
-
2.39.0
12/12/22
- 2.38.3 → 2.38.5 変更なし
-
2.38.2
12/11/22
- 2.38.1 変更なし
-
2.38.0
10/02/22
- 2.37.3 → 2.37.7 変更なし
-
2.37.2
08/11/22
- 2.37.1 変更なし
-
2.37.0
06/27/22
- 2.36.1 → 2.36.6 変更なし
-
2.36.0
04/18/22
- 2.35.1 → 2.35.8 変更なし
-
2.35.0
01/24/22
- 2.34.1 → 2.34.8 変更なし
-
2.34.0
11/15/21
- 2.33.3 → 2.33.8 変更なし
-
2.33.2
03/23/22
-
2.33.1
10/12/21
- 2.32.1 → 2.33.0 変更なし
-
2.32.0
06/06/21
- 2.31.1 → 2.31.8 変更なし
-
2.31.0
03/15/21
- 2.30.1 → 2.30.9 変更なし
-
2.30.0
12/27/20
- 2.29.1 → 2.29.3 変更なし
-
2.29.0
10/19/20
- 2.28.1 変更なし
-
2.28.0
07/27/20
- 2.27.1 変更なし
-
2.27.0
06/01/20
- 2.26.1 → 2.26.3 変更なし
-
2.26.0
03/22/20
- 2.25.2 → 2.25.5 変更なし
-
2.25.1
02/17/20
-
2.25.0
01/13/20
- 2.23.1 → 2.24.4 変更なし
-
2.23.0
08/16/19
- 2.22.2 → 2.22.5 変更なし
-
2.22.1
08/11/19
-
2.22.0
06/07/19
- 2.20.1 → 2.21.4 変更なし
-
2.20.0
12/09/18
- 2.19.3 → 2.19.6 変更なし
-
2.19.2
11/21/18
- 2.19.1 変更なし
-
2.19.0
09/10/18
- 2.18.1 → 2.18.5 変更なし
-
2.18.0
06/21/18
- 2.17.1 → 2.17.6 変更なし
-
2.17.0
04/02/18
-
2.16.6
12/06/19
-
2.15.4
12/06/19
-
2.14.6
12/06/19
- 2.13.7 変更なし
-
2.12.5
09/22/17
-
2.11.4
09/22/17
-
2.10.5
09/22/17
-
2.9.5
07/30/17
-
2.8.6
07/30/17
-
2.7.6
07/30/17
-
2.6.7
05/05/17
-
2.5.6
05/05/17
-
2.4.12
05/05/17
-
2.3.10
09/28/15
-
2.2.3
09/04/15
-
2.1.4
12/17/14
-
2.0.5
12/17/14
概要
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 コマンド」を使用して、個々の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[1]を参照してください。
git --help ...
は内部的にgit help ...
に変換されるためです。 - -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=
` オプション(または`GIT_WORK_TREE`環境変数)を使用して、ワークツリーの最上位レベルの場所をGitに伝える必要があります。 `
` で開始されたかのように git を実行したいだけの場合、`git -C ` を使用してください。 - --work-tree=
-
ワークツリーへのパスを設定します。絶対パスまたは現在の作業ディレクトリからの相対パスを指定できます。これは、`GIT_WORK_TREE` 環境変数と `core.worktree` 設定変数を設定することによっても制御できます(より詳細な説明については、git-config[1] の `core.worktree` を参照してください)。
- --namespace=
-
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
- --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=
[, …] -
グループ別にコマンドを一覧表示します。これは内部/実験的なオプションであり、将来変更または削除される可能性があります。サポートされているグループは次のとおりです。builtins、parseopt(parse-optionsを使用する組み込みコマンド)、main(libexecディレクトリ内のすべてのコマンド)、others(`$PATH`内のgit-プレフィックスを持つその他すべてのコマンド)、list-
(command-list.txtのカテゴリを参照)、nohelpers(ヘルパーコマンドを除外)、aliasおよびconfig(config変数completion.commandsからコマンドリストを取得) - --attr-source=
-
ワークツリーの代わりに
からgitattributesを読み取ります。gitattributes[5]を参照してください。これは、`GIT_ATTR_SOURCE`環境変数を設定することと同じです。
高レベルコマンド(ポーセリン)
ポーセリンコマンドは、メインコマンドと補助的なユーティリティに分けられます。
メインポーセリンコマンド
- git-add[1]
-
インデックスにファイルの内容を追加します。
- git-am[1]
-
メールボックスから一連のパッチを適用します。
- git-archive[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]
-
refsへの低レベルアクセス
- git-remote[1]
-
追跡対象のリポジトリセットの管理
- git-repack[1]
-
リポジトリ内のパックされていないオブジェクトをパックする
- git-replace[1]
-
オブジェクトを置き換えるrefsの作成、一覧表示、削除
情報取得系コマンド
- 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リポジトリとのインポートと提出
- git-quiltimport[1]
-
現在のブランチにquiltパッチセットを適用する
- 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` と重複します。
低レベルコマンド(Plumbing)
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つのツリーオブジェクトを介して見つかった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は、リポジトリごと、ユーザーごとにカスタマイズを保存するために、シンプルなテキスト形式を使用します。このような設定ファイルは次のようになります。
# # 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>
-
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」として解釈されます。
変数は次のとおりです。
Gitリポジトリ
これらの環境変数は、すべてのGitコアコマンドに適用されます。注意:これらはGitの上位にあるSCMSによって使用/上書きされる可能性があるため、外部のフロントエンドを使用する場合は注意してください。
-
GIT_INDEX_FILE
-
この環境変数は、代替インデックスファイルを指定します。指定されていない場合、デフォルトの
$GIT_DIR/index
が使用されます。 -
GIT_INDEX_VERSION
-
この環境変数は、インデックスファイルを書き出す際に使用するインデックスバージョンを指定します。既存のインデックスファイルには影響しません。デフォルトでは、インデックスファイルバージョン2または3が使用されます。詳細については、git-update-index[1]を参照してください。
-
GIT_OBJECT_DIRECTORY
-
オブジェクトストレージディレクトリがこの環境変数で指定されている場合、sha1ディレクトリはそれの下に作成されます。そうでない場合は、デフォルトの
$GIT_DIR/objects
ディレクトリが使用されます。 -
GIT_ALTERNATE_OBJECT_DIRECTORIES
-
Gitオブジェクトの不変性のために、古いオブジェクトは共有の読み取り専用ディレクトリにアーカイブできます。この変数は、Gitオブジェクトの検索に使用できるGitオブジェクトディレクトリの":"区切り(Windowsでは";"区切り)リストを指定します。新しいオブジェクトはこれらのディレクトリには書き込まれません。
"
(二重引用符)で始まるエントリは、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やインデックスなどの作業ツリー固有のファイルは$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
-
有効な設定は、統一された差分が作成されるときに表示されるコンテキスト行数を設定する
"--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
-
は、
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経由でフェッチまたはプッシュする際に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_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ドキュメントで詳細をご覧ください。
-
GIT_TRACE2_EVENT
-
この設定は、機械による解釈に適したJSON形式で書き込みます。利用可能なトレース出力オプションについては
GIT_TRACE2
を参照し、詳細についてはTrace2ドキュメントをご覧ください。 -
GIT_TRACE2_PERF
-
GIT_TRACE2
で利用可能なテキストベースのメッセージに加えて、この設定はネストされた領域を理解するための列ベースの形式で書き込みます。利用可能なトレース出力オプションについてはGIT_TRACE2
を参照し、詳細についてはTrace2ドキュメントをご覧ください。 -
GIT_TRACE_REDACT
-
デフォルトでは、トレースが有効になっている場合、GitはCookieの値、「Authorization:」ヘッダー、「Proxy-Authorization:」ヘッダー、およびパックファイルURIを秘匿します。この秘匿を無効にするには、このブール型の環境変数をfalseに設定します。
-
GIT_NO_REPLACE_OBJECTS
-
この環境変数を設定してエクスポートすると、Gitは置換refを無視し、Gitオブジェクトを置換しません。
-
GIT_LITERAL_PATHSPECS
-
このブール型の環境変数をtrueに設定すると、Gitはすべてのパススペックをglobパターンではなく、リテラルとして扱います。たとえば、
GIT_LITERAL_PATHSPECS=1 git log -- '*.c'
を実行すると、*.c
というパスに影響を与えるコミットが検索され、*.c
に一致するパスは検索されません。これは、リテラルパスをGitに供給する場合(例:git ls-tree
、--raw
diff出力などによって以前に提供されたパス)に必要になる場合があります。 -
GIT_GLOB_PATHSPECS
-
このブール型の環境変数をtrueに設定すると、Gitはすべてのパススペックをglobパターン(別名「glob」マジック)として扱います。
-
GIT_NOGLOB_PATHSPECS
-
このブール型の環境変数をtrueに設定すると、Gitはすべてのパススペックをリテラル(別名「リテラル」マジック)として扱います。
-
GIT_ICASE_PATHSPECS
-
このブール型の環境変数をtrueに設定すると、Gitはすべてのパススペックを大文字と小文字を区別しないものとして扱います。
-
GIT_NO_LAZY_FETCH
-
このブール型の環境変数をtrueに設定すると、Gitは必要に応じてプロミサーリモートから不足しているオブジェクトを遅延フェッチしません。
-
GIT_REFLOG_ACTION
-
refが更新されると、reflogエントリが作成され、refが更新された理由(通常はrefを更新した上位レベルのコマンドの名前)に加えて、refの古い値と新しい値が追跡されます。スクリプト化された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 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値の後に省略記号を出力します。これは、デタッチされたHEADの表示(git-checkout[1])とraw diff出力(git-diff[1])に影響します。上記の場合の省略記号の出力はもはや適切とはみなされず、そのサポートは近い将来(変数とともに)削除される可能性があります。 -
GIT_ADVICE
-
0
に設定されている場合、すべてのアドバイスメッセージを無効にします。これらのメッセージは、問題のある状況からの脱出や新機能の活用に役立つヒントを人間のユーザーに提供することを目的としています。ユーザーは、advice.*
設定キーを使用して個々のメッセージを無効にすることができます。これらのメッセージは、Gitプロセスを実行するツールを妨害する可能性があるため、この変数を使用してメッセージを無効にすることができます。(グローバルオプション--no-advice
も使用できますが、このオプションが理解されない古いGitバージョンは失敗する可能性があります。この環境変数は、それを理解しないGitバージョンでは無視されます。)
議論
以下の詳細については、ユーザーマニュアルのGitの概念に関する章とgitcore-tutorial[7]を参照してください。
Gitプロジェクトは通常、最上位レベルに「.git」サブディレクトリがある作業ディレクトリで構成されています。.gitディレクトリには、他のものの中で、プロジェクトの完全な履歴を表す圧縮されたオブジェクトデータベース、その履歴を作業ツリーの現在の内容にリンクする「インデックス」ファイル、およびタグやブランチヘッドなどのその履歴への名前付きポインタが含まれています。
オブジェクトデータベースには、3つの主要なタイプのオブジェクトが含まれています。ファイルデータを含むblob、ディレクトリ階層を構築するためにblobや他のツリーを指すツリー、およびそれぞれ単一のツリーといくつかの親コミットを参照するコミットです。
コミットは、他のシステムが「変更セット」または「バージョン」と呼ぶものと同等であり、プロジェクトの履歴におけるステップを表し、各親は直前のステップを表します。複数の親を持つコミットは、独立した開発ラインのマージを表します。
すべてのオブジェクトは、その内容のSHA-1ハッシュによって命名され、通常は40個の16進数の文字列として記述されます。そのような名前はグローバルに一意です。コミットに至るまでの履歴全体は、そのコミットに署名するだけで保証できます。この目的のために、4番目のオブジェクトタイプであるタグが提供されています。
最初に作成されたオブジェクトは個々のファイルに格納されますが、効率のために後で「パックファイル」に圧縮される場合があります。
refと呼ばれる名前付きポインタは、履歴の興味深いポイントをマークします。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 の使用方法を開始するには、「説明」セクションの参照を参照してください。以下は、初めて使用するユーザーにとって必要以上に詳細な情報です。
ユーザーマニュアルの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] スイートの一部