リンクしたのとまったく同じドキュメントの説明でupstream
、質問に対する答えが得られます。
このモードは、通常プルするのと同じリポジトリにプッシュする場合にのみ意味があります (つまり、中央ワークフロー)。
したがって、このコンテキストでの「中央ワークフロー」は、リベースまたはマージのどちらを使用するかに関係なく、「通常、最新のアップストリームの変更を取得するのと同じリポジトリにプッシュする」と定義されます。(構成とパラメーターに応じて、プル = フェッチ + マージまたはフェッチ + リベース)
「中央ワークフロー」があるかどうかは、このコンテキストではプッシュ コールごとに異なる可能性があります。プッシュしようとしているローカル ブランチにリモート トラッキング ブランチ (アップストリーム ブランチ) が設定されている場合、このトラッキング ブランチは通常、更新を取得する場所 (追跡するブランチ) であるため、リベースまたはマージを行う場合(もちろん、フェッチ+マージまたはフェッチ+プルのようにプルします)何をリベースするか、何をマージするかを指定せずに、リモート追跡ブランチが使用されます。
プッシュすると、Git は、プッシュしようとしているローカル ブランチのトラッキング ブランチとして設定した同じリモートの同じブランチにプッシュするかどうかを認識します。これが一致する場合、このコンテキストで「中央ワークフロー」として定義されupstream
、使用されます。そうでない場合、または追跡ブランチが設定されていない場合 (「ない」場合もある)、current
使用されます。
違いは次のとおりです。
現在:
- ローカル ブランチ
foo
はリモート ブランチを追跡しますbar/baz
。
foo
リモートへのプッシュでは、特に言わない限り 、ブランチにプッシュします。
- ローカル ブランチ
foo
はリモート ブランチを追跡しますbar/foo
。
foo
リモートへのプッシュでは、特に言わない限り 、ブランチにプッシュします。
- ローカル ブランチ
foo
はリモート ブランチを追跡しません。
foo
リモートへのプッシュでは、特に言わない限り、ブランチにプッシュします。
上流:
- ローカル ブランチ
foo
はリモート ブランチを追跡しますbar/baz
。
- リモートへのプッシュでは、特に言わない限り
bar
、ブランチにプッシュします。baz
- 他のリモートにプッシュすると、リモートがアップストリームではないため、プッシュ先を正確に指定する必要があるというエラーが表示されます
- ローカル ブランチ
foo
はリモート ブランチを追跡しますbar/foo
。
- リモートへのプッシュでは、特に言わない限り
bar
、ブランチにプッシュします。foo
- 他のリモートにプッシュすると、リモートがアップストリームではないため、プッシュ先を正確に指定する必要があるというエラーが表示されます
- ローカル ブランチ
foo
はリモート ブランチを追跡しません。
- リモートにプッシュすると、上流のブランチを設定する必要があるというエラーが表示されます
シンプル:
- ローカル ブランチ
foo
はリモート ブランチを追跡しますbar/baz
。
- リモート
bar
にプッシュすると、名前が一致しないため明示的にプッシュするように指示するエラーが表示されます
- 他のリモートへのプッシュでは、ブランチにプッシュします
foo
。
- ローカル ブランチ
foo
はリモート ブランチを追跡しますbar/foo
。
foo
リモートへのプッシュでは、特に言わない限り 、ブランチにプッシュします。
- ローカル ブランチ
foo
はリモート ブランチを追跡しません。
- リモートにプッシュすると、上流のブランチを設定する必要があるというエラーが表示されます