SYNOPSIS
git archive [--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 get-tar-commit-id
を使用して抽出できます。ZIPファイルでは、ファイルコメントとして保存されます。
OPTIONS
-
--format=<fmt>
-
結果のアーカイブの形式を指定します。「tar」または「zip」です。 このオプションが指定されておらず、出力ファイルが指定されている場合、可能であればファイル名から形式が推測されます(たとえば、「foo.zip」に書き込むと、出力はzip形式になります)。それ以外の場合、出力形式は
tar
です。 -
-l
-
--list
-
有効なすべての形式を表示します。
-
-v
-
--verbose
-
進捗状況をstderrに報告します。
-
--prefix=<prefix>/
-
アーカイブ内の各ファイル名の前に <prefix>/ を付けます。
-
-o <file>
-
--output=<file>
-
アーカイブをstdoutではなく<file>に書き込みます。
-
--add-file=<file>
-
追跡されていないファイルをアーカイブに追加します。繰り返すことで複数のファイルを追加する事ができます。アーカイブ内のファイルのパスは、
--prefix
の値(存在する場合) と<file>のベース名を連結することによって作成されます。 -
--worktree-attributes
-
作業ツリーの .gitattributes ファイルでも属性を探します( [ATTRIBUTES] 参照)。
- <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
-
-0
-
ファイルを圧縮せずに保存します。
-
-9
-
最も高圧縮かつ最も遅い圧縮レベル。あなたは1〜9までの任意の整数を指定して、圧縮速度と比率を調整できます。
CONFIGURATION
- tar.umask
-
この変数は、tarアーカイブエントリの許可ビットを制限するために使用できます。 デフォルトは 0002 で、ワールド書き込みビットをオフにします。特別な値「user」は、代わりにアーカイブユーザーのumaskが使用されることを示します。詳細については、 umask(2) を参照してください。
--remote
が使用されている場合、リモートリポジトリの設定のみが有効になります。 - tar.<format>.command
-
この変数は、
git archive
によって生成されたtar出力をパイプするシェルコマンドを指定します。コマンドは、標準入力から生成されたtarファイル取り込み、シェルを使用して実行され、標準出力に最終出力を生成する必要があります。圧縮レベルのオプションはすべてコマンドに渡されます(例:-9
)。他の形式が指定されていない場合、出力ファイルの拡張子が<format>
と同じ場合にこの形式を使用します。「tar.gz」および「tgz」形式は自動的に定義され、デフォルトで「gzip -cn」になります。 カスタムコマンドでそれらを上書きすることができます。
- 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 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