?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
git-send-pack - 將對(duì)象通過(guò) Git 協(xié)議推送到另一個(gè)存儲(chǔ)庫(kù)
git send-pack [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [--atomic] [--[no-]signed|--sign=(true|false|if-asked)] [<host>:]<directory> [<ref>…]
通常你會(huì)想要使用git push
這個(gè)命令的高級(jí)包裝,而不是這個(gè)。見(jiàn)git-push [1]。
調(diào)用git-receive-pack
可能是遠(yuǎn)程的存儲(chǔ)庫(kù),并從當(dāng)前的存儲(chǔ)庫(kù)更新它,發(fā)送名為 refs。
--receive-pack=<git-receive-pack>
git-receive-pack
遠(yuǎn)程端程序的路徑。通過(guò) ssh 推送到遠(yuǎn)程存儲(chǔ)庫(kù)時(shí)有用,而且您沒(méi)有默認(rèn)$ PATH 目錄中的程序。
--exec=<git-receive-pack>
與--receive-pack = <git-receive-pack>相同。
--all
而不是明確指定要更新哪些參考,更新所有本地存在的頭。
--stdin
從 stdin 中獲取參考列表,每行一個(gè)。如果除了此選項(xiàng)外,還在命令行中指定了引用,則 stdin 中的引用將在命令行中的引用之后進(jìn)行處理。
如果--stateless-rpc
與此選項(xiàng)一起指定,則參考列表必須采用數(shù)據(jù)包格式(pkt-line)。每個(gè) ref 必須位于一個(gè)單獨(dú)的數(shù)據(jù)包中,并且該列表必須以 flush 數(shù)據(jù)包結(jié)尾。
--dry-run
除了實(shí)際發(fā)送更新之外,請(qǐng)做其他事
--force
通常,該命令拒絕更新遠(yuǎn)程 ref,該遠(yuǎn)程 ref 不是用于覆蓋它的本地 ref 的祖先。此標(biāo)志禁用檢查。這意味著遠(yuǎn)程倉(cāng)庫(kù)可能會(huì)失去提交; 小心使用它。
--verbose
詳細(xì)地運(yùn)行。
--thin
發(fā)送一個(gè)“精簡(jiǎn)”包,該包根據(jù)包中未包含的對(duì)象以分辨形式記錄對(duì)象,以減少網(wǎng)絡(luò)流量。
--atomic
使用原子事務(wù)來(lái)更新參考。如果任何一個(gè) ref 沒(méi)有更新,那么整個(gè) push 將會(huì)失敗而不改變?nèi)魏?refs。
--no-signed --sign=(true|false|if-asked)
GPG-信號(hào) 推送請(qǐng)求以更新接收端的 refs,以便通過(guò)鉤子檢查和/或記錄。如果false
或者--no-signed
,不會(huì)嘗試簽名。如果true
或者--signed
,如果服務(wù)器不支持簽名推送,推送將失敗。如果設(shè)置為if-asked
,則當(dāng)且僅當(dāng)服務(wù)器支持簽名推送時(shí)簽名。如果實(shí)際的調(diào)用gpg --sign
失敗,推送也會(huì)失敗。有關(guān)接收端的詳細(xì)信息,請(qǐng)參閱 git-receive-pack [1]。
--push-option=<string>
將指定的字符串作為推送選項(xiàng)傳遞給服務(wù)器端的掛鉤使用。如果服務(wù)器不支持推送選項(xiàng),則出錯(cuò)。有關(guān)詳細(xì)信息,請(qǐng)參閱 git-push [1]和 githooks [5]。
<host>
一個(gè)遠(yuǎn)程主機(jī)來(lái)存放版本庫(kù)。當(dāng)這部分被指定時(shí),通過(guò)ssh調(diào)用git-receive-pack
。
<directory>
要更新的存儲(chǔ)庫(kù)。
<ref>…
遠(yuǎn)程參考更新。
有三種方法可以指定在遠(yuǎn)程端更新哪些參考。
使用--all
標(biāo)志,本地存在的所有參考將轉(zhuǎn)移到遠(yuǎn)程方。如果您使用此標(biāo)志,則不能指定任何<ref>
內(nèi)容。
如果沒(méi)有--all
和沒(méi)有<ref>
,本地和遠(yuǎn)端存在的頭都會(huì)更新。
當(dāng)明確指定一個(gè)或多個(gè)<ref>
(無(wú)論是在命令行還是通過(guò)--stdin
)時(shí),它可以是單個(gè)模式,也可以是由冒號(hào)“:”分隔的一對(duì)這樣的模式(這意味著 ref 名稱(chēng)不能包含冒號(hào)它)。一個(gè)模式<name>
只是一個(gè)<name>:<name>
簡(jiǎn)寫(xiě)。
每個(gè)模式對(duì)由源端(冒號(hào)前)和目標(biāo)端(冒號(hào)后)組成。要推送的引用是通過(guò)找到匹配源端的匹配來(lái)確定的,并且推送的位置由目標(biāo)端確定。用于匹配 ref 的規(guī)則與用于git rev-parse
解析符號(hào) ref 名稱(chēng)的規(guī)則相同。參見(jiàn) git-rev-parse [1]。
如果<src>不完全匹配一個(gè)本地引用,那是錯(cuò)誤的。
如果<dst>匹配多個(gè)遠(yuǎn)程引用,那是錯(cuò)誤的。
如果<dst>與任何遠(yuǎn)程參考不匹配
- it has to start with "refs/"; <dst> is used as the destination literally in this case.
- <src> == <dst> and the ref that matched the <src> must not exist in the set of remote refs; the ref matched <src> locally is used as the name of the destination.
如果沒(méi)有--force
,<src> ref僅在<dst>不存在的情況下存儲(chǔ)在遠(yuǎn)程,或者<dst>是<src>的真子集(即祖先)。此檢查稱(chēng)為“快進(jìn)檢查”,以避免意外覆蓋遠(yuǎn)程參考并丟失其他人的提交。
與此同時(shí)--force
,所有裁判都禁用快進(jìn)檢查。
可選地,一個(gè)<ref>參數(shù)可以帶有加+
號(hào)前綴以禁用僅在該 ref 上的快進(jìn)檢查。