簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-send-pack 上次更新於 2.43.0

名稱

git-send-pack - 透過 Git 協議向另一個倉庫推送物件

概要

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> 引數可以加一個加號 + 字首,以僅在該引用上停用快進檢查。

GIT

Git[1] 套件的一部分

scroll-to-top