設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.43.1 → 2.50.1 無更改
-
2.43.0
2023-11-20
- 2.39.1 → 2.42.4 無更改
-
2.39.0
2022-12-12
- 2.34.1 → 2.38.5 無更改
-
2.34.0
2021-11-15
- 2.18.1 → 2.33.8 無更改
-
2.18.0
2018-06-21
- 2.16.6 → 2.17.6 無更改
-
2.15.4
2019-12-06
- 2.14.6 無更改
-
2.13.7
2018-05-22
- 2.10.5 → 2.12.5 無更改
-
2.9.5
2017-07-30
- 2.7.6 → 2.8.6 無更改
-
2.6.7
2017-05-05
- 2.5.6 無更改
-
2.4.12
2017-05-05
- 2.2.3 → 2.3.10 無更改
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
概要
git send-pack [--mirror] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [--atomic] [--[no-]signed | --signed=(true|false|if-asked)] [<host>:]<directory> (--all | <ref>…)
描述
通常你會想使用 git push,它是這個命令的高階封裝。請參閱 git-push[1]。
在可能的遠端倉庫上呼叫 git-receive-pack,並從當前倉庫更新它,傳送指定引用。
選項
- --receive-pack=<git-receive-pack>
-
遠端端 git-receive-pack 程式的路徑。當透過 ssh 推送到遠端倉庫,並且程式不在預設的 $PATH 目錄中時,此選項有時很有用。
- --exec=<git-receive-pack>
-
與 --receive-pack=<git-receive-pack> 相同。
- --all
-
不顯式指定要更新的引用,而是更新所有本地存在的頭部(heads)。
- --stdin
-
從標準輸入(stdin)獲取引用列表,每行一個。如果除了此選項外,命令列上也指定了引用,則標準輸入中的引用將在命令列上的引用處理之後進行處理。
如果
--stateless-rpc
與此選項一起指定,則引用列表必須是包格式(pkt-line)。每個引用必須在一個單獨的包中,並且列表必須以一個重新整理包(flush packet)結束。 - --dry-run
-
執行所有操作,但實際上不傳送更新。
- --force
-
通常,命令會拒絕更新不是用於覆蓋它的本地引用祖先的遠端引用。此標誌停用該檢查。這意味著遠端倉庫可能會丟失提交;請謹慎使用。
- --verbose
-
執行詳細模式。
- --thin
-
傳送一個“thin”包,它以基於未包含在包中的物件進行增量化(deltified)的形式記錄物件,以減少網路流量。
- --atomic
-
使用原子事務更新引用。如果任何引用更新失敗,則整個推送將失敗,不會更改任何引用。
- --[no-]signed
- --signed=(true|false|if-asked)
-
對推送請求進行 GPG 簽名,以更新接收端的引用,以便鉤子可以檢查和/或記錄。如果
false
或--no-signed
,將不嘗試簽名。如果true
或--signed
,如果伺服器不支援簽名推送,則推送將失敗。如果設定為if-asked
,則僅當伺服器支援簽名推送時才簽名。如果實際呼叫gpg
--sign
失敗,推送也將失敗。有關接收端的詳細資訊,請參閱 git-receive-pack[1]。 - --push-option=<string>
-
將指定的字串作為推送選項傳遞,供伺服器端的鉤子使用。如果伺服器不支援推送選項,則報錯。有關詳細資訊,請參閱 git-push[1] 和 githooks[5]。
- <host>
-
託管倉庫的遠端主機。指定此部分時,git-receive-pack 會透過 ssh 呼叫。
- <directory>
-
要更新的倉庫。
- <ref>…
-
要更新的遠端引用。
指定引用
有三種方法可以指定要更新遠端端的引用。
使用 --all
標誌時,所有本地存在的引用都會傳輸到遠端端。如果使用此標誌,則不能指定任何 <ref>。
在不使用 --all
且不帶任何 <ref> 的情況下,同時存在於本地和遠端的頭部(heads)會被更新。
當明確指定一個或多個 <ref>(無論是透過命令列還是透過 --stdin
)時,它可以是一個單獨的模式,或者是兩個由冒號 ":" 分隔的模式(這意味著引用名稱不能包含冒號)。單個模式 <name> 只是 <name>:<name> 的簡寫。
每個模式對都包含源端(冒號前)和目標端(冒號後)。要推送的引用透過查詢與源端匹配的引用來確定,其推送位置由目標端確定。用於匹配引用的規則與 git rev-parse 解析符號引用名稱的規則相同。請參閱 git-rev-parse[1]。
-
如果 <src> 未完全匹配一個本地引用,則會報錯。
-
如果 <dst> 匹配多個遠端引用,則會報錯。
-
如果 <dst> 未匹配任何遠端引用,則:
-
它必須以 "refs/" 開頭;在這種情況下,<dst> 將被字面用作目標。
-
<src> == <dst> 且匹配 <src> 的引用必須不存在於遠端引用集中;本地匹配 <src> 的引用將用作目標的名稱。
-
在不帶 --force
的情況下,僅當 <dst> 不存在,或者 <dst> 是 <src> 的一個適當子集(即祖先)時,<src> 引用才會被儲存到遠端。此檢查(稱為“快進檢查”)旨在避免意外覆蓋遠端引用並丟失其中其他人的提交。
使用 --force
時,所有引用的快進檢查都被停用。
可選地,<ref> 引數可以加一個加號 + 字首,以僅在該引用上停用快進檢查。