設定與配置
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢查與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.46.1 → 2.47.0 沒有變更
-
2.46.0
07/29/24
- 2.43.1 → 2.45.2 沒有變更
-
2.43.0
11/20/23
- 2.40.1 → 2.42.3 沒有變更
-
2.40.0
03/12/23
- 2.38.1 → 2.39.5 沒有變更
-
2.38.0
10/02/22
- 2.37.1 → 2.37.7 沒有變更
-
2.37.0
06/27/22
- 2.34.1 → 2.36.6 沒有變更
-
2.34.0
11/15/21
- 2.29.1 → 2.33.8 沒有變更
-
2.29.0
10/19/20
- 2.1.4 → 2.28.1 沒有變更
-
2.0.5
12/17/14
概要
git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>] [-o <file> | --output=<file>] [--worktree-attributes] [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish> [<path>…]
描述
建立指定格式的封存,其中包含指定樹狀結構的結構,並將其寫入標準輸出。如果指定了 <prefix>,則會將其附加到封存中的檔案名稱。
當提供樹狀結構 ID 而不是提交 ID 或標籤 ID 時,git archive 的行為會有所不同。當提供樹狀結構 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
-
向 stderr 報告進度。
- --prefix=<prefix>/
-
將 <prefix>/ 前置到封存中的路徑。可以重複;其最右邊的值用於所有追蹤的檔案。請參閱下方
--add-file
使用哪個值。 - -o <file>
- --output=<file>
-
將封存寫入 <file> 而不是 stdout。
- --add-file=<file>
-
將未追蹤的檔案新增至封存。可以重複以新增多個檔案。封存中檔案的路徑是透過串連此
--add-file
之前的最後一個--prefix
選項(如果有的話)的值和 <file> 的基本名稱來建立。 - --add-virtual-file=<path>:<content>
-
將指定的內容新增至封存。可以重複以新增多個檔案。
<path>
引數可以以字面雙引號字元開始和結束;包含的檔案名稱會解譯為 C 風格字串,即反斜線會解譯為跳脫字元。如果路徑包含冒號,則必須加上引號,以避免將冒號誤解為路徑和內容之間的分隔符號,或者如果路徑以雙引號字元開始或結束。檔案模式僅限於一般檔案,並且該選項可能會受到平台相關的命令列限制。對於非簡單的情況,請寫入未追蹤的檔案並改用
--add-file
。請注意,與
--add-file
不同,在封存中建立的路徑不受--prefix
選項的影響,因為可以將完整的<path>
作為選項的值提供。 - --worktree-attributes
-
也在工作樹中尋找 .gitattributes 檔案中的屬性(請參閱 屬性)。
- --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
格式會自動定義,預設使用 magic 命令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 壓縮檔,其中包含目前分支上最新提交的內容,沒有前置詞,以及前置詞為 build/ 的未追蹤檔案 configure。
-
git config tar.tar.xz.command "xz -c"
-
設定用於建立 LZMA 壓縮 tar 檔案的 "tar.xz" 格式。 您可以使用
--format=tar.xz
指定它,或建立像-o foo.tar.xz
這樣的輸出檔案。
GIT
屬於 git[1] 套件的一部分