日本語 ▾ トピック ▾ 最新バージョン ▾ git-archive は 2.46.0 で最終更新されました

名前

git-archive - 名前付きツリーからファイルのアーカイブを作成する

概要

git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>]
	      [-o <file> | --output=<file>] [--worktree-attributes]
	      [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
	      [<path>…​]

説明

指定されたフォーマットのアーカイブを、名前付きツリーのツリー構造を含めて作成し、標準出力に書き出します。が指定されている場合、アーカイブ内のファイル名の先頭に付加されます。

git archiveは、ツリーIDが与えられた場合と、コミットIDまたはタグIDが与えられた場合で異なる動作をします。ツリーIDが提供された場合、アーカイブ内の各ファイルの修正時刻として現在の時刻が使用されます。一方、コミットIDまたはタグIDが提供された場合、参照されるコミットオブジェクトに記録されたコミット時刻が使用されます。さらに、tarフォーマットが使用されている場合、コミットIDはグローバル拡張paxヘッダーに保存され、git get-tar-commit-idを使用して抽出できます。ZIPファイルでは、ファイルコメントとして保存されます。

オプション

--format=<fmt>

結果のアーカイブのフォーマット。指定可能な値はtarziptar.gztgz、および設定オプションtar.<format>.commandを使用して定義された任意のフォーマットです。--formatが与えられず、出力ファイルが指定されている場合、可能であればファイル名からフォーマットが推測されます(例:foo.zipに書き込むと出力はzipフォーマットになります)。それ以外の場合、出力フォーマットはtarです。

-l
--list

利用可能なすべてのフォーマットを表示します。

-v
--verbose

進行状況を標準エラー出力に報告します。

--prefix=<prefix>/

アーカイブ内のパスに<prefix>/を付加します。複数回指定でき、一番右の値がすべての追跡対象ファイルに使用されます。`--add-file`で使用される値については以下を参照してください。

-o <file>
--output=<file>

アーカイブを標準出力ではなく<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>

--remoteと併用して、リモート側のgit-upload-archiveへのパスを指定します。

<tree-ish>

アーカイブを作成するツリーまたはコミット。

<path>

オプションのパスパラメータがない場合、現在の作業ディレクトリ内のすべてのファイルとサブディレクトリがアーカイブに含まれます。1つ以上のパスが指定された場合、それらのみが含まれます。

バックエンドの追加オプション

zip

-<digit>

圧縮レベルを指定します。値が大きいほど、コマンドがより多くの時間をかけてより小さなサイズに圧縮できます。サポートされる値は`-0`(ストアのみ)から`-9`(最良比率)までです。指定されない場合、デフォルトは`-6`です。

tar

-<number>

圧縮レベルを指定します。この値は`tar.<format>.command`で設定された圧縮コマンドに渡されます。サポートされるレベルのリストおよびこのオプションが指定されていない場合のデフォルトレベルについては、設定されたコマンドのマニュアルページを参照してください。

設定

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-1.4.0-docs.zip`に、`git-docs/`というプレフィックスを付けて格納します。

git archive -o latest.zip HEAD

現在のブランチの最新コミットの内容を含むZipアーカイブを作成します。出力フォーマットは出力ファイルの拡張子によって推測されることに注意してください。

git archive -o latest.tar --prefix=build/ --add-file=configure --prefix= HEAD

現在のブランチの最新コミットの内容をプレフィックスなしで含み、追跡されていないファイル`configure`を`build/`というプレフィックス付きで含むtarアーカイブを作成します。

git config tar.tar.xz.command "xz -c"

LZMA圧縮されたtarファイルを作成するための「tar.xz」フォーマットを設定します。`--format=tar.xz`を指定するか、`-o foo.tar.xz`のような出力ファイルを作成することで使用できます。

GIT

git[1]スイートの一部

scroll-to-top