SYNOPSIS

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

DESCRIPTION

通常は、代わりに、このコマンドの上位レベルのラッパーである「git push」を使用することをお勧めします。 git-push(1) を参照してください。

おそらくリモートリポジトリで git-receive-pack を呼び出し、現在のリポジトリから更新して、名前付きrefsを送信します。

OPTIONS

--receive-pack=<git-receive-pack>

リモート側の 「git-receive-pack」プログラムへのパス。 sshを介してリモートリポジトリにプッシュするとき、デフォルトの $PATH のディレクトリにプログラムが無い場合に便利です。

--exec=<git-receive-pack>

--receive-pack=<git-receive-pack> と同じ。

--all

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

--stdin

stdinからrefのリストを1行に1つずつ取得します。 このオプションに加えてコマンドラインでrefが指定されている場合、stdinからのrefはコマンドラインでのrefの後に処理されます。

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

--dry-run

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

--force

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

--verbose

おしゃべりに実行します。

--thin

ネットワークトラフィックを削減するために、パックに含まれていないオブジェクトに基づいてオブジェクトを削除された形式で記録する薄いパック(thin pack)を送信します。

--atomic

参照を更新するためにアトミック取引(atomic transaction)を使用します。いずれかのrefが更新に失敗した場合、refを変更せずにプッシュ全体が失敗します。

--[no-]signed
--signed=(true|false|if-asked)

プッシュリクエストをGPG署名して、受信側のrefを更新し、フックでチェックしたり、ログに記録したりできるようにします。 false または --no-signed の場合、署名は試行されません。 true または --signed の場合、サーバーが署名付きプッシュをサポートしていないと、プッシュは失敗します。 if-asked に設定されている場合、サーバーが署名されたプッシュをサポートしている場合にのみ署名します。 gpg --sign の実際の呼び出しが失敗した場合も、プッシュは失敗します。 受信側の詳細については、 git-receive-pack(1) を参照してください。

--push-option=<string>

サーバー側のフックで使用するためのプッシュオプションとして、指定された文字列を渡します。 サーバーがプッシュオプションをサポートしていない場合は、エラーになります。 詳細については、 git-push(1)githooks(5) を参照してください。

<host>

リポジトリを収容するリモートホスト。 この部分を指定すると、sshを介して「git-receive-pack」が呼び出されます。

<directory>

更新するリポジトリ。

<ref>…

更新するリモートref。

SPECIFYING THE REFS

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

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

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

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

各パターンペアは、ソース側(コロンの前)と、宛先側(コロンの後)で構成されます。プッシュされるrefは、ソース側にマッチするモノを見つけることによって決定され、プッシュされる場所は、宛先側を使用して決定されます。refの照合に使用されるルールは、シンボリックref名を解決するために「git rev-parse」で使用されるルールと同じです。 git-rev-parse(1) を参照してください。

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

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

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

    • 「refs/」で始まる必要があります。 この場合、文字通り <dst> が宛先として使用されます。

    • <src> == <dst> および、 <src> に一致するrefは、リモートrefのセットに存在してはなりません。 ローカルで一致する参照 <src> が、宛先の名前として使用されます。

--force がない場合、<src> refは、<dst>が存在しない場合、または<dst>が<src>の適切なサブセット(つまり、祖先)である場合にのみリモートに保存されます。 「早送りチェック」(fast-forward check)と呼ばれるこのチェックは、リモートrefを誤って上書きして、そこから他の人のコミットを失うことを回避するために行われます。

--force を使用すると、すべてのrefに対して早送りチェック(fast-forward check)が無効になります。

オプションで、<ref>パラメーターの前にプラスの「+」記号を付けて、そのrefでのみ早送りチェック(fast-forward check)を無効にすることができます。

GIT

Part of the git(1) suite