日本語 ▾ トピック ▾ 最新バージョン ▾ 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

更新する参照を明示的に指定する代わりに、ローカルに存在するすべてのヘッドを更新します。

--stdin

参照のリストを標準入力から1行ずつ読み込みます。このオプションに加えてコマンドラインで参照が指定されている場合、標準入力からの参照はコマンドラインの参照の後に処理されます。

--stateless-rpcがこのオプションと一緒に指定されている場合、参照のリストはパケット形式 (pkt-line) である必要があります。各参照は個別のパケットに含まれ、リストはフラッシュパケットで終わる必要があります。

--dry-run

実際に更新を送信する以外のすべてを行います。

--force

通常、このコマンドは、上書きに使用されるローカル参照の祖先ではないリモート参照を更新することを拒否します。このフラグはチェックを無効にします。これは、リモートリポジトリがコミットを失う可能性があることを意味します。注意して使用してください。

--verbose

詳細な出力を表示して実行します。

--thin

ネットワークトラフィックを減らすために、パックに含まれないオブジェクトに基づいてデルタ化された形式でオブジェクトを記録する「thin」パックを送信します。

--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>…​

更新するリモート参照。

参照の指定

リモートで更新する参照を指定するには3つの方法があります。

--allフラグを使用すると、ローカルに存在するすべての参照がリモート側に転送されます。このフラグを使用する場合、<ref>は指定できません。

--all<ref>も指定しない場合、ローカル側とリモート側の両方に存在するヘッドが更新されます。

1つ以上の<ref>が明示的に指定されている場合(コマンドラインまたは--stdin経由)、それは単一のパターンであるか、またはコロン「:」で区切られたそのようなパターンのペアであることができます(これは参照名にコロンを含めることができないことを意味します)。単一のパターン<name>は、<name>:<name>の短縮形です。

各パターンペアは、ソース側(コロンの前)と宛先側(コロンの後)で構成されます。プッシュされる参照は、ソース側に一致するものを探すことによって決定され、どこにプッシュされるかは宛先側を使用することによって決定されます。参照を一致させるために使用される規則は、git rev-parseがシンボリック参照名を解決するために使用するのと同じ規則です。git-rev-parse[1]を参照してください。

  • <src> がローカル参照のいずれか1つに厳密に一致しない場合、エラーとなります。

  • <dst> が複数のリモート参照に一致する場合、エラーとなります。

  • もし <dst> がどのリモート参照にも一致しない場合、

    • それは "refs/" で始まる必要があります。この場合、<dst> はそのまま宛先として使用されます。

    • <src> == <dst> で、<src> に一致した参照がリモート参照のセットに存在しない必要があります。ローカルで <src> に一致した参照が宛先の名前として使用されます。

--forceなしでは、<src> 参照は <dst> が存在しない場合、または <dst> が <src> の適切な部分集合 (すなわち祖先) である場合にのみリモートに保存されます。このチェックは「ファストフォワードチェック」として知られ、リモート参照を誤って上書きして、他人のコミットを失うことを避けるために実行されます。

--forceを使用すると、すべての参照に対してファストフォワードチェックが無効になります。

オプションとして、<ref> パラメータの前にプラス記号 + を付けて、その参照のみファストフォワードチェックを無効にすることができます。

GIT

git[1] スイートの一部

scroll-to-top