設定與配置
取得與建立專案
基本快照
分支與合併
分享與更新專案
檢視與比較
修補
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.43.1 → 2.47.0 無變更
-
2.43.0
11/20/23
- 2.39.1 → 2.42.3 無變更
-
2.39.0
12/12/22
- 2.34.1 → 2.38.5 無變更
-
2.34.0
11/15/21
- 2.18.1 → 2.33.8 無變更
-
2.18.0
06/21/18
- 2.16.6 → 2.17.6 無變更
-
2.15.4
12/06/19
- 2.14.6 無變更
-
2.13.7
05/22/18
- 2.10.5 → 2.12.5 無變更
-
2.9.5
07/30/17
- 2.7.6 → 2.8.6 無變更
-
2.6.7
05/05/17
- 2.5.6 無變更
-
2.4.12
05/05/17
- 2.2.3 → 2.3.10 無變更
-
2.1.4
12/17/14
-
2.0.5
12/17/14
概要
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,並從目前的儲存庫更新它,同時傳送已命名的 refs。
選項
- --receive-pack=<git-receive-pack>
-
遠端上的 git-receive-pack 程式的路徑。當透過 ssh 推送到遠端儲存庫,並且你的程式不在預設的 $PATH 目錄中時,有時會很有用。
- --exec=<git-receive-pack>
-
與 --receive-pack=<git-receive-pack> 相同。
- --all
-
不要明確指定要更新哪些 refs,更新所有本地存在的 heads。
- --stdin
-
從 stdin 取得 refs 清單,每行一個。如果除了此選項之外,命令列上還有指定 refs,則 stdin 中的 refs 會在命令列上的 refs 之後處理。
如果
--stateless-rpc
與此選項一起指定,則 refs 清單必須採用封包格式 (pkt-line)。每個 ref 必須在單獨的封包中,並且清單必須以 flush 封包結尾。 - --dry-run
-
執行所有操作,除了實際傳送更新。
- --force
-
通常,此命令會拒絕更新不是用於覆蓋它的本地 ref 之祖先的遠端 ref。此旗標會停用此檢查。這表示遠端儲存庫可能會遺失 commit;請謹慎使用。
- --verbose
-
以詳細模式執行。
- --thin
-
傳送一個「精簡」封包,它會根據未包含在封包中的物件,以差異形式記錄物件,以減少網路流量。
- --atomic
-
使用原子交易來更新 refs。如果任何 refs 更新失敗,則整個推送將失敗,而不會變更任何 refs。
- --[no-]signed
- --signed=(true|false|if-asked)
-
對推送請求進行 GPG 簽署,以更新接收端的 refs,使其可以由 hooks 檢查和/或記錄。如果為
false
或--no-signed
,則不會嘗試簽署。如果為true
或--signed
,如果伺服器不支援簽署的推送,則推送將會失敗。如果設定為if-asked
,則僅當伺服器支援簽署的推送時才簽署。如果實際呼叫gpg --sign
失敗,則推送也會失敗。請參閱 git-receive-pack[1] 以取得接收端的詳細資訊。 - --push-option=<string>
-
傳遞指定的字串作為推送選項,以供伺服器端的 hooks 使用。如果伺服器不支援推送選項,則會發生錯誤。請參閱 git-push[1] 和 githooks[5] 以取得詳細資訊。
- <host>
-
託管儲存庫的遠端主機。當指定此部分時,將透過 ssh 調用 git-receive-pack。
- <directory>
-
要更新的儲存庫。
- <ref>…
-
要更新的遠端 refs。
指定 Refs
有三種方法可以指定要更新遠端上的哪些 refs。
使用 --all
旗標,所有本地存在的 refs 都會傳輸到遠端。如果使用此旗標,則不能指定任何 <ref>。
在沒有 --all
和任何 <ref> 的情況下,本地端和遠端都存在的 heads 會被更新。
當明確指定一個或多個 <ref> 時(無論是在命令列上還是透過 --stdin
),它可以是單一模式,也可以是由冒號 ":" 分隔的成對模式(這表示 ref 名稱中不能有冒號)。單一模式 <name> 只是 <name>:<name> 的簡寫。
每個模式對都由來源端(冒號之前)和目的地端(冒號之後)組成。要推送的 ref 是透過尋找與來源端匹配的匹配項來確定,並且它是推送到哪裡是透過使用目的地端來確定。用於匹配 ref 的規則與 git rev-parse 用於解析符號 ref 名稱的規則相同。請參閱 git-rev-parse[1]。
-
如果 <src> 沒有完全匹配本地 refs 中的一個,則會發生錯誤。
-
如果 <dst> 匹配多個遠端 ref,則會發生錯誤。
-
如果 <dst> 不匹配任何遠端 ref,則
-
它必須以 "refs/" 開頭;在這種情況下,<dst> 將按字面意義用作目的地。
-
<src> == <dst>,且匹配 <src> 的 ref 不得存在於遠端 refs 集中;本地匹配 <src> 的 ref 將用作目的地的名稱。
-
在沒有 --force
的情況下,只有在 <dst> 不存在,或者 <dst> 是 <src> 的正確子集(即祖先)時,<src> ref 才會儲存在遠端。此檢查(稱為「快速轉發檢查」)的執行目的是為了避免意外覆寫遠端 ref 並從那裡遺失其他人的 commit。
使用 --force
時,會停用所有 refs 的快速轉發檢查。
選擇性地,可以在 <ref> 參數前面加上加號 + 符號,以僅針對該 ref 停用快速轉發檢查。
GIT
屬於 git[1] 套件的一部分