セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの規約
- 日々のGit
- よくある質問 (FAQ)
- 用語集
- フック
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
低レベルコマンド
- 2.46.1 → 2.47.0 変更なし
-
2.46.0
07/29/24
- 2.43.1 → 2.45.2 変更なし
-
2.43.0
11/20/23
- 2.40.1 → 2.42.3 変更なし
-
2.40.0
03/12/23
- 2.38.1 → 2.39.5 変更なし
-
2.38.0
10/02/22
- 2.37.1 → 2.37.7 変更なし
-
2.37.0
06/27/22
- 2.34.1 → 2.36.6 変更なし
-
2.34.0
11/15/21
- 2.29.1 → 2.33.8 変更なし
-
2.29.0
10/19/20
- 2.1.4 → 2.28.1 変更なし
-
2.0.5
12/17/14
概要
git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>] [-o <file> | --output=<file>] [--worktree-attributes] [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish> [<path>…]
説明
指定された形式のアーカイブを作成し、指定されたツリーのツリー構造を含めて標準出力に書き出します。<prefix> が指定されている場合、アーカイブ内のファイル名の前に付加されます。
git archive は、コミットIDまたはタグIDとは対照的に、ツリーIDが指定された場合、動作が異なります。ツリーIDが指定されている場合、アーカイブ内の各ファイルの更新時刻として現在時刻が使用されます。一方、コミットIDまたはタグIDが指定されている場合、参照されるコミットオブジェクトに記録されているコミット時刻が代わりに使用されます。さらに、tar 形式が使用されている場合、コミット ID はグローバル拡張 pax ヘッダーに格納されます。 git get-tar-commit-id を使用して抽出できます。ZIP ファイルでは、ファイルコメントとして格納されます。
オプション
- --format=<fmt>
-
結果のアーカイブの形式。可能な値は、
tar
、zip
、tar.gz
、tgz
、および設定オプションtar.<format>.command
を使用して定義された形式です。--format
が指定されておらず、出力ファイルが指定されている場合、可能な場合はファイル名から形式が推測されます (例:foo.zip
に書き込むと、出力はzip
形式になります)。そうでない場合、出力形式はtar
です。 - -l
- --list
-
使用可能なすべての形式を表示します。
- -v
- --verbose
-
進捗を stderr に報告します。
- --prefix=<prefix>/
-
アーカイブ内のパスの前に <prefix>/ を付加します。繰り返すことができます。一番右の値が、すべての追跡対象ファイルに使用されます。
--add-file
でどの値が使用されるかは、以下を参照してください。 - -o <file>
- --output=<file>
-
アーカイブを stdout の代わりに <file> に書き込みます。
- --add-file=<file>
-
追跡されていないファイルをアーカイブに追加します。複数のファイルを追加するために繰り返すことができます。アーカイブ内のファイルのパスは、この
--add-file
の前にある最後の--prefix
オプションの値 (存在する場合) と <file> のベース名を連結することによって構築されます。 - --add-virtual-file=<path>:<content>
-
指定された内容をアーカイブに追加します。複数のファイルを追加するために繰り返すことができます。
<path>
引数は、リテラルの二重引用符で開始および終了できます。含まれるファイル名は C スタイルの文字列として解釈されます。つまり、バックスラッシュはエスケープ文字として解釈されます。パスにコロンが含まれている場合、コロンがパスと内容の区切り文字として誤って解釈されないように、またはパスが二重引用符で開始または終了する場合、パスを引用符で囲む必要があります。ファイルモードは通常のファイルに制限されており、オプションはプラットフォームに依存するコマンドラインの制限の対象となる場合があります。簡単なケースではない場合は、追跡されていないファイルを書き込み、代わりに
--add-file
を使用してください。--add-file
とは異なり、アーカイブに作成されるパスは--prefix
オプションの影響を受けないことに注意してください。オプションの値として完全な<path>
を指定できるためです。 - --worktree-attributes
-
作業ツリーの .gitattributes ファイルでも属性を探します (属性 を参照)。
- --mtime=<time>
-
アーカイブエントリの更新時刻を設定します。このオプションがない場合、
<tree-ish>
がコミットまたはタグの場合はコミッター時刻が使用され、ツリーの場合は現在時刻が使用されます。 - <extra>
-
これは、アーカイバーバックエンドが理解できる任意のオプションです。次のセクションを参照してください。
- --remote=<repo>
-
ローカルリポジトリから tar アーカイブを作成する代わりに、リモートリポジトリから tar アーカイブを取得します。リモートリポジトリは、
<tree-ish>
で許可される sha1 式に制限を設ける場合があることに注意してください。詳細については、git-upload-archive[1] を参照してください。 - --exec=<git-upload-archive>
-
リモート側で git-upload-archive へのパスを指定するために
--remote
と共に使用されます。 - <tree-ish>
-
アーカイブを作成するツリーまたはコミット。
- <path>
-
オプションのパス パラメーターがない場合、現在の作業ディレクトリのすべてのファイルとサブディレクトリがアーカイブに含まれます。1 つ以上のパスが指定されている場合、これらのみが含まれます。
設定
- tar.umask
-
この変数を使用して、tar アーカイブ エントリのパーミッション ビットを制限できます。デフォルトは 0002 で、ワールド書き込みビットをオフにします。特別な値 "user" は、アーカイブ ユーザーの umask が代わりに使用されることを示します。詳細については、umask(2) を参照してください。
--remote
が使用されている場合、リモート リポジトリの設定のみが有効になります。 - tar.<format>.command
-
この変数は、
git archive
によって生成された tar 出力をパイプするシェルコマンドを指定します。コマンドは、生成された tar ファイルを標準入力としてシェルを使用して実行され、最終出力を標準出力に生成する必要があります。圧縮レベルのオプションはすべてコマンドに渡されます (例:-9
)。tar.gz
およびtgz
形式は自動的に定義され、デフォルトでマジックコマンドgit archive gzip
を使用します。これは gzip の内部実装を呼び出します。 - tar.<format>.remote
-
true の場合、git-upload-archive[1] を介したリモートクライアントによる使用のためにフォーマットを有効にします。ユーザー定義の形式の場合はデフォルトで false ですが、
tar.gz
およびtgz
形式の場合は true です。
属性
- export-ignore
-
属性 export-ignore が設定されているファイルとディレクトリは、アーカイブファイルに追加されません。詳細については、gitattributes[5] を参照してください。
- export-subst
-
ファイルに属性 export-subst が設定されている場合、Git はこのファイルをアーカイブに追加するときにいくつかのプレースホルダーを展開します。詳細については、gitattributes[5] を参照してください。
属性は、デフォルトでアーカイブされているツリーの .gitattributes
ファイルから取得されることに注意してください。事後に出力の生成方法を調整する場合 (たとえば、.gitattributes
に適切な export-ignore を追加せずにコミットした場合)、チェックアウトされた .gitattributes
ファイルを必要に応じて調整し、--worktree-attributes
オプションを使用します。または、任意のツリーをアーカイブするときに適用する必要がある属性を $GIT_DIR/info/attributes
ファイルに保持することもできます。
例
-
git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)
-
現在のブランチの最新のコミットの内容を含む tar アーカイブを作成し、
/var/tmp/junk
ディレクトリに抽出します。 -
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
-
v1.4.0 リリースの圧縮 tarball を作成します。
-
git archive --format=tar.gz --prefix=git-1.4.0/ v1.4.0 >git-1.4.0.tar.gz
-
上記と同じですが、組み込みの tar.gz 処理を使用します。
-
git archive --prefix=git-1.4.0/ -o git-1.4.0.tar.gz v1.4.0
-
上記と同じですが、フォーマットは出力ファイルの拡張子から推測されます。
-
git archive --format=tar --prefix=git-1.4.0/ v1.4.0^{tree} | gzip >git-1.4.0.tar.gz
-
v1.4.0 リリースの圧縮 tarball を作成しますが、グローバル拡張 pax ヘッダーは含めません。
-
git archive --format=zip --prefix=git-docs/ HEAD:Documentation/ > git-1.4.0-docs.zip
-
現在の HEAD の Documentation/ ディレクトリの内容をすべて、プレフィックス *git-docs/* を付けて *git-1.4.0-docs.zip* に格納します。
-
git archive -o latest.zip HEAD
-
現在のブランチの最新のコミットの内容を含む Zip アーカイブを作成します。出力フォーマットは出力ファイルの拡張子から推測されることに注意してください。
-
git archive -o latest.tar --prefix=build/ --add-file=configure --prefix= HEAD
-
プレフィックスなしで現在のブランチの最新のコミットの内容と、プレフィックス *build/* を付けた追跡されていないファイル *configure* を含む tar アーカイブを作成します。(※原文に誤りがある可能性があります。`--prefix=`が2回指定されています)
-
git config tar.tar.xz.command "xz -c"
-
LZMA 圧縮 tar ファイルを作成するための "tar.xz" フォーマットを設定します。
--format=tar.xz
を指定するか、`-o foo.tar.xz` のような出力ファイルを作成することで使用できます。
GIT
git[1] スイートの一部