設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.46.1 → 2.50.1 無更改
-
2.46.0
2024-07-29
- 2.43.1 → 2.45.4 無更改
-
2.43.0
2023-11-20
- 2.40.1 → 2.42.4 無更改
-
2.40.0
2023-03-12
- 2.38.1 → 2.39.5 無更改
-
2.38.0
2022-10-02
- 2.37.1 → 2.37.7 無更改
-
2.37.0
2022-06-27
- 2.34.1 → 2.36.6 無更改
-
2.34.0
2021-11-15
- 2.29.1 → 2.33.8 無變更
-
2.29.0
2020-10-19
- 2.1.4 → 2.28.1 無更改
-
2.0.5
2014-12-17
概要
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>
-
結果歸檔的格式。可能的值有
tar
,zip
,tar.gz
,tgz
,以及使用配置選項tar.
<format>.command
定義的任何格式。如果未給出--format
且指定了輸出檔案,則格式將盡可能從檔名推斷(例如,寫入foo.zip
會使輸出為zip
格式)。否則,輸出格式為tar
。 - -l
- --list
-
顯示所有可用格式。
- -v
- --verbose
-
向標準錯誤報告進度。
- --prefix=<prefix>/
-
將
/ 新增到歸檔中的路徑前。可重複使用;其最右邊的值用於所有跟蹤檔案。參見下文,哪個值會被 --add-file
使用。 - -o <file>
- --output=<file>
-
將歸檔寫入
而非標準輸出。 - --add-file=<file>
-
將非跟蹤檔案新增到歸檔。可重複使用以新增多個檔案。檔案中歸檔中的路徑透過連線此
--add-file
之前最後一個--prefix
選項的值(如果有)和 <file> 的基本名稱來構建。 - --add-virtual-file=<path>:<content>
-
將指定內容新增到歸檔。可重複使用以新增多個檔案。
<path> 引數可以以字面雙引號字元開頭和結尾;包含的檔名被解釋為C風格字串,即反斜槓被解釋為跳脫字元。如果路徑包含冒號,則必須加引號,以避免冒號被誤解為路徑和內容之間的分隔符,或者如果路徑以雙引號字元開頭或結尾。
檔案模式僅限於常規檔案,並且該選項可能受平臺相關的命令列限制。對於非平凡情況,請寫入一個未跟蹤檔案並改用
--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>
-
如果沒有可選的路徑引數,則當前工作目錄的所有檔案和子目錄都將被包含在歸檔中。如果指定了一個或多個路徑,則只包含這些路徑。
配置
- tar.umask
-
此變數可用於限制tar歸檔條目的許可權位。預設值為0002,這關閉了全域性寫入位。特殊值“user”表示將改用歸檔使用者的umask。詳情請參見 umask(2)。如果使用
--remote
,則只有遠端倉庫的配置生效。 - tar.<format>.command
-
此變數指定一個shell命令,
git
archive
生成的tar輸出應透過此命令進行管道傳輸。該命令使用shell執行,生成的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
-
建立一個tar歸檔,其中包含當前分支最新提交的內容(無字首)和未跟蹤檔案 configure(帶 build/ 字首)。
git
config
tar.tar.xz.command
"xz
-c"
-
配置“tar.xz”格式以建立LZMA壓縮的tar檔案。您可以使用
--format=tar.xz
來指定它,或者透過建立像-o
foo.tar.xz
這樣的輸出檔案來使用它。