日本語 ▾ トピック ▾ 最新バージョン ▾ 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行に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] を参照してください。

<ホスト>

リポジトリをホストするリモートホスト。この部分が指定されている場合、git-receive-pack はSSH経由で呼び出されます。

<ディレクトリ>

更新するリポジトリ。

<ref>…​

更新するリモートのリファレンス。

参照の指定

リモート側でどのリファレンスを更新するかを指定する方法は3つあります。

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

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

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

各パターンペアは、ソース側 (コロンの前) とデスティネーション側 (コロンの後) で構成されます。プッシュするリファレンスは、ソース側に一致するマッチを見つけることで決定され、どこにプッシュされるかはデスティネーション側を使用することで決定されます。リファレンスをマッチさせるために使用されるルールは、git rev-parse がシンボリックリファレンス名を解決するために使用するルールと同じです。git-rev-parse[1] を参照してください。

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

  • <dst> が複数のリモートリファレンスに一致する場合、エラーとなります。

  • <dst> がどのリモート参照にも一致しない場合、以下のいずれかです。

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

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

--force なしの場合、<src> リファレンスは、<dst> が存在しないか、<dst> が <src> の適切なサブセット (つまり祖先) である場合にのみリモートに保存されます。このチェックは「ファストフォワードチェック」として知られており、リモートリファレンスを誤って上書きし、そこから他の人のコミットを失うことを防ぐために実行されます。

--force を指定すると、すべてのリファレンスに対するファストフォワードチェックが無効になります。

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

GIT

git[1]スイートの一部

scroll-to-top