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
-
この変数は、
git
archive
によって生成されたtar出力をパイプするシェルコマンドを指定します。コマンドは、標準入力から生成されたtarファイル取り込み、シェルを使用して実行され、標準出力に最終出力を生成する必要があります。圧縮レベルのオプションはすべてコマンドに渡されます(例:-9
)。tar.gz
およびtgz
形式は自動的に定義され、デフォルトで魔法の(magic)コマンドgit
archive
gzip
を使用します。これにより、 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
-
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ヘッダー(global extended pax header)はありません。
-
git
archive
--format=zip
--prefix=git-docs/
HEAD:Documentation/
>git-1.4.0-docs.zip
-
現在のヘッド の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
-
プレフィックス無しの現在のブランチの最新のコミットのコンテンツと、プレフィックス
build/
付きの未追跡ファイルconfigure
を含む tar アーカイブを作成します。 -
git
config
tar.tar.xz.command
"xz-c
" -
LZMA圧縮tarファイルを作成するための「tar.xz」形式を構成します。
--format=tar.xz
を指定するか、-o
foo.tar.xz
のような出力ファイルを作成することで使用できます。
SEE ALSO
GIT
Part of the git(1) suite