directory search
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
characters

命名

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时的行为不同。在第一种情况下,当前时间用作档案中每个文件的修改时间。在后一种情况下,将使用记录在所引用的提交对象中的提交时间。此外,如果使用tar格式,提交ID将存储在全局扩展pax标头中; 它可以使用提取git get-tar-commit-id。在ZIP文件中,它被存储为文件注释。

选项

--format=<fmt>

结果存档的格式:tarzip。如果没有给出这个选项,并且指定了输出文件,那么如果可能的话,从文件名中推断格式(例如,写入“foo.zip”使得输出为zip格式)。否则,输出格式是tar

-l   --list

显示所有可用的格式。

-v   --verbose

将进展报告给stderr。

--prefix=<prefix>/

在档案中的每个文件名前加上<prefix> /。

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

将存档写入<file>而不是stdout。

--worktree-attributes

在工作树中查找.gitattributes文件中的属性(请参阅ATTRIBUTES)。

<extra>

这可以是存档器后端了解的任何选项。请参阅下一节。

--remote=<repo>

无需从本地存储库创建tar归档文件,可以从远程存储库中检索tar归档文件。请注意,远程存储库可能会限制允许使用哪个sha1表达式<tree-ish>。有关详细信息,请参阅git-upload-archive [1]。

--exec=<git-upload-archive>

与--remote一起用于指定git-upload-archive远程端的路径。

<tree-ish>

该树或承诺生成一个档案。

<path>

如果没有可选的路径参数,则当前工作目录的所有文件和子目录都将包含在归档中。如果指定了一个或多个路径,则只包含这些路径。

后端额外选项

压缩

-0

存储文件而不是缩小它们。

-9

最高和最低的压缩级别。您可以指定1到9之间的任何数字来调整压缩速度和比率。

组态

tar.umask

这个变量可以用来限制tar归档项的权限位。默认值是0002,这将关闭世界写入位。特殊值“user”表示将使用归档用户的umask。有关详细信息,请参阅umask(2)。如果--remote使用,则只有远程存储库的配置才会生效。

tar.<format>.command

该变量指定一个shell命令,通过该命令应该通过其管理生成的tar输出git archive。该命令使用带有标准输入上生成的tar文件的shell来执行,并且应该在其标准输出上生成最终输出。任何压缩级别选项都将传递给命令(例如“-9”)。<format>如果没有给出其他格式,则具有相同扩展名的输出文件将使用此格式。

“tar.gz”和“tgz”格式是自动定义的,默认为gzip -cn。您可以使用自定义命令覆盖它们。

tar.<format>.remote

如果为true,则<format>通过git-upload-archive [1]为远程客户端启用。对于用户定义的格式,默认为false,但对于“tar.gz”和“tgz”格式则为true。

属性

export-ignore

带有export-ignore属性的文件和目录不会被添加到归档文件中。有关详细信息,请参阅gitattributes [5]。

export-subst

如果将属性export-subst设置为文件,那么在将该文件添加到存档时,Git将展开多个占位符。有关详细信息,请参阅gitattributes [5]。

请注意,属性默认取自.gitattributes正在归档的树中的文件。如果你想调整事实后产生输出的方式(例如,你没有在其中添加一个适当的export-ignore,.gitattributes.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

将所有内容放入当前头文件/目录中git-1.4.0-docs.zip,并加上前缀git-docs/

git archive -o latest.zip HEAD

创建一个Zip存档,其中包含当前分支上最新提交的内容。请注意,输出格式是由输出文件的扩展名推断的。

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

配置一个“tar.xz”格式来制作LZMA压缩的tarfiles。您可以使用它来指定--format=tar.xz或创建一个输出文件-o foo.tar.xz

Previous article: Next article: