SYNOPSIS
gitarchive[--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>] [-o<file> |--output=<file>] [--worktree-attributes] [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish> [<path>…]
DESCRIPTION
名前付きツリーのツリー構造を含む指定された形式のアーカイブを作成し、標準出力に書き出します。 <prefix> が指定されている場合、アーカイブ内のファイル名の前に追加されます。
git archive は、コミットIDやタグIDとは対照的に、 ツリーIDを指定すると振る舞いが異なります。 ツリーIDを指定した場合は、現在の時刻がアーカイブ内の各ファイルの変更時刻として使用されます。 一方、 コミットID、 またはタグIDが指定されている場合は、 代わりに、 参照されたコミット・オブジェクトに記録されているコミット時間が使用されます。 さらに、 tar 形式が使用されている場合、コミットIDはグローバル拡張 pax ヘッダー(global extended pax header)に格納されます。 git archive によって作成されたtarアーカイブのコミットIDは git get-tar-commit-id を使用して抽出できます。 ZIPファイルでは、 ファイル・コメントとして保存されます。
OPTIONS
-
--format=<fmt> -
結果のアーカイブの形式を指定します。 可能な値は、
tarとzipとtar.gzとtgzと、構成オプションtar.<format>.commandを使用して定義された任意の形式です。--formatが指定されておらず、出力ファイルが指定されている場合、形式は、可能であればファイル名から推測されます(たとえば、foo.zipに書き込むと、出力はzip形式になります)。 それ以外の場合、出力形式はtarです。 -
-l -
--list -
有効なすべての形式を表示します。
-
-v -
--verbose -
進捗状況をstderrに報告します。
-
--prefix=<prefix>/ -
<prefix>
/をアーカイブ内のパスに追加します。 繰り返すことができ、その右端(rightmost)の値が、すべての追跡ファイル(tracked files)で使用されます。--add-fileで使用される値については下記参照。 -
-o<file> -
--output=<file> -
アーカイブをstdoutではなく<file>に書き込みます。
-
--add-file=<file> -
追跡されていないファイルをアーカイブに追加します。 繰り返すことで複数のファイルを追加する事ができます。 そのファイルのアーカイブ内のパスは、 この
--add-fileの前の最後の--prefixオプション (存在する場合) の値と <file> のベース名を連結することによって構築されます。 -
--add-virtual-file=<path>:<content> -
指定したコンテンツをアーカイブに追加します。 このオプションを繰り返して複数のファイルを追加できます。
<path> 引数は二重引用符文字(")で囲む事ができます。その場合含まれるファイル名は C スタイルの文字列として解釈されます。つまり、バックスラッシュはエスケープ文字として解釈されます。 パスにコロン(
:)が含まれている場合、またはパスが二重引用符文字(")で開始または終了する場合、コロンがパスとコンテンツの間の区切り記号として誤って解釈されないように、パスをクォートする必要があります。ファイル・モードは通常のファイル(regular file)に制限されており、オプションはプラットフォームに依存するコマンド・ラインの制限を受ける場合があります。 重要なケースでは、未追跡ファイル(untracked file)を作成し、代わりに
--add-fileを使用します。注意:
--add-fileとは異なり、 アーカイブ内に作成されたパスは--prefixオプションの影響を受けないことに注意してください。 これは、 オプションの値として完全な <path> を指定できるためです。 -
--worktree-attributes -
作業ツリーの .gitattributes ファイルでも属性を探します( [ATTRIBUTES] 参照)。
-
--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つ以上のパスが指定されている場合、それらのみが含まれます。
BACKEND EXTRA OPTIONS
zip
-
-<digit> -
圧縮レベルを指定します。 値が大きいほど、コマンドはより小さいサイズに圧縮するためにより多くの時間を費やすことができます。 サポートされている値は
-0(格納のみ) から-9(最良の比率) までです。 指定しない場合のデフォルトは-6です。
tar
-
-<number> -
圧縮レベルを指定します。 この値は、
tar.<format>.commandで設定された圧縮コマンドに渡されます。 サポートされているレベルのリストと、このオプションが指定されていない場合のデフォルトのレベルについては、構成コマンド(configured command)のマニュアル・ページを参照してください。
CONFIGURATION
- tar.umask
-
この変数は、tarアーカイブエントリの許可ビットを制限するために使用できます。 デフォルトは 0002 で、ワールド書き込みビットをオフにします。特別な値「user」は、代わりにアーカイブユーザーのumaskが使用されることを示します。詳細については、 umask(2) を参照してください。
--remoteが使用されている場合、リモートリポジトリの設定のみが有効になります。 - tar.<format>.command
-
この変数は、
gitarchiveによって生成されたtar出力をパイプするシェルコマンドを指定します。コマンドは、標準入力から生成されたtarファイル取り込み、シェルを使用して実行され、標準出力に最終出力を生成する必要があります。圧縮レベルのオプションはすべてコマンドに渡されます(例:-9)。tar.gzおよびtgz形式は自動的に定義され、デフォルトで魔法の(magic)コマンドgitarchivegzipを使用します。これにより、 gzip の内部実装が呼び出されます。 - tar.<format>.remote
-
trueの場合、 git-upload-archive(1) を介してリモートクライアントで使用できるように <format> を有効にします。 ユーザー定義形式の場合、デフォルトは false ですが、
tar.gzおよびtgz形式の場合は true です。
ATTRIBUTES
- export-ignore
-
属性export-ignoreを持つファイルとディレクトリは、アーカイブファイルに追加されません。 詳細については、 gitattributes(5) を参照してください。
- export-subst
-
属性export-substがファイルに設定されている場合、Gitはこのファイルをアーカイブに追加するときにいくつかのプレースホルダーを展開します。詳細については、 gitattributes(5) を参照してください。
注意: デフォルトでは、属性はアーカイブされているツリーの .gitattributes ファイルから取得されることに注意してください。事後に出力が生成される方法を微調整したい場合(たとえば、 .gitattributes に適切な export-ignore を追加せずにコミットした場合)、必要に応じてチェックアウトされた .gitattributes ファイルを調整して --worktree-attributes オプションを使用します。 または、 $GIT_DIR/info/attributes ファイルに、ツリーをアーカイブするときに適用する必要のある属性を保持することもできます。
EXAMPLES
-
gitarchive--format=tar--prefix=junk/HEAD| (cd/var/tmp/&&tarxf-) -
現在のブランチの最新のコミットの内容を含むtarアーカイブを作成し、それを
/var/tmp/junkディレクトリに抽出します。 -
gitarchive--format=tar--prefix=git-1.4.0/v1.4.0|gzip>git-1.4.0.tar.gz -
これは、 v1.4.0リリース用の圧縮tarballを作成します。
-
gitarchive--format=tar.gz--prefix=git-1.4.0/v1.4.0>git-1.4.0.tar.gz -
これは、上記と同じですが、組み込みのtar.gz処理を使用します。
-
gitarchive--prefix=git-1.4.0/-ogit-1.4.0.tar.gzv1.4.0 -
これは上記と同じですが、形式は出力ファイル名から推測されます。
-
gitarchive--format=tar--prefix=git-1.4.0/v1.4.0^{tree} |gzip>git-1.4.0.tar.gz -
v1.4.0リリース用の圧縮tarballを作成しますが、グローバル拡張paxヘッダー(global extended pax header)はありません。
-
gitarchive--format=zip--prefix=git-docs/HEAD:Documentation/>git-1.4.0-docs.zip -
現在の HEAD のDocumentation/ ディレクトリにあるすべてのものを「git-1.4.0-docs.zip」にプレフィックス「git-docs/」を付けて配置します。
-
gitarchive-olatest.zipHEAD -
現在のブランチの最新のコミットの内容を含むZipアーカイブを作成します。出力形式は、出力ファイルの拡張子によって推測されることに注意してください。
-
gitarchive-olatest.tar--prefix=build/--add-file=configure--prefix=HEAD -
プレフィックス無しの現在のブランチの最新のコミットのコンテンツと、プレフィックス
build/付きの未追跡ファイルconfigureを含む tar アーカイブを作成します。 -
gitconfigtar.tar.xz.command"xz-c" -
LZMA圧縮tarファイルを作成するための「tar.xz」形式を構成します。
--format=tar.xzを指定するか、-ofoo.tar.xzのような出力ファイルを作成することで使用できます。
SEE ALSO
GIT
Part of the git(1) suite