設定與組態
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢查與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
- gitattributes
- 命令列介面規範
- Git 日常使用
- 常見問題 (FAQ)
- 詞彙表
- 掛鉤 (Hooks)
- gitignore
- gitmodules
- 修訂版本 (Revisions)
- 子模組
- 教學
- 工作流程
- 所有指南...
管理
底層命令 (Plumbing Commands)
- 2.55.0 無變更
-
2.54.0
2026-04-20
- 2.46.1 → 2.53.0 無變更
-
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>…]
描述
建立一個包含指定樹狀物件結構的封存檔,格式依指定,並寫入標準輸出。若指定了 <prefix>,則會將其加在封存檔內各檔名的開頭。
git archive 在處理樹狀物件識別碼(tree ID)與處理提交識別碼(commit ID)或標籤識別碼(tag ID)時行為不同。當提供樹狀物件識別碼時,封存檔中每個檔案的修改時間將設為當前時間。另一方面,當提供提交識別碼或標籤識別碼時,則使用參考的提交物件中所記錄的提交時間。此外,若使用 tar 格式,提交識別碼會儲存在全域擴充 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
-
向 stderr 回報進度。
- --prefix=<prefix>/
-
將 <prefix>/ 加在封存檔內路徑的前面。可以重複使用;最右側的值會用於所有被追蹤的檔案。請參見下文關於
--add-file會使用哪個值的說明。<prefix> 會直接使用而不會正規化。它可能包含開頭的斜線或上層目錄元件(例如
../)。某些封存檔取用工具可能會將此類路徑視為潛在不安全,並在解壓縮時進行調整或發出警告。 - -o <file>
- --output=<file>
-
將封存檔寫入 <file> 而非標準輸出。
- --add-file=<file>
-
將未追蹤的檔案加入封存檔。可以重複使用以加入多個檔案。封存檔內的檔案路徑由該
--add-file之前最後一個--prefix選項的值(若有)加上 <file> 的基底名稱(basename)組合而成。 - --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 封存檔,而是從遠端儲存庫擷取。請注意,遠端儲存庫可能會限制 <tree-ish> 中允許使用的 sha1 表達式。詳情請見 git-upload-archive[1]。
- --exec=<git-upload-archive>
-
與 --remote 一起使用,以指定遠端側 git-upload-archive 的路徑。
- <tree-ish>
-
要產生封存檔的樹狀物件或提交物件。
- <path>
-
若無選填的路徑參數,目前工作目錄的所有檔案和子目錄都會包含在封存檔中。若指定了一個或多個路徑,則僅包含這些路徑。
組態設定 (CONFIGURATION)
- tar.umask
-
此變數可用於限制 tar 封存檔項目的權限位元。預設值為 0002,會關閉全域寫入位元。特殊值 "user" 表示改用封存使用者的 umask。詳情請見 umask(2)。若使用了
--remote,則僅遠端儲存庫的設定生效。 - tar.<format>.command
-
此變數指定一個 shell 命令,
gitarchive產生的 tar 輸出應透過管線導向該命令。該命令會使用 shell 執行,並將產生的 tar 檔案作為其標準輸入,並應在標準輸出產生最終結果。任何壓縮等級選項都會傳遞給此命令(例如-9)。tar.gz和tgz格式是自動定義的,預設使用神奇命令gitarchivegzip,它會呼叫內建的 gzip 實作。 - tar.<format>.remote
-
若為 true,則啟用該格式供遠端用戶端透過 git-upload-archive[1] 使用。對於使用者自訂格式預設為 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 檔案中。
範例
- 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 處理方式。
gitarchive--prefix=git-1.4.0/-ogit-1.4.0.tar.gzv1.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/ 前綴。
gitarchive-olatest.zipHEAD-
建立一個包含目前分支最新提交內容的 Zip 封存檔。請注意,輸出格式是由輸出檔案的副檔名所推斷的。
gitarchive-olatest.tar--prefix=build/--add-file=configure--prefix=HEAD-
建立一個 tar 封存檔,其中包含目前分支最新提交的內容(無前綴),以及具有 build/ 前綴的未追蹤檔案 configure。
gitconfigtar.tar.xz.command"xz-c"-
設定用於製作 LZMA 壓縮 tar 檔案的 "tar.xz" 格式。您可以透過指定
--format=tar.xz或建立如-ofoo.tar.xz的輸出檔案來使用它。
GIT
git[1] 套件的一部分