重複として閉じる可能性のある他のスレッドから私の答えを持ってきました...
GITドキュメントから:Git Docs
以下に完全な情報を示します。要するに、それがリモートで同じ名前を持っている場合にのみ、そしてそれでもsimple
プッシュします。current working branch
これは初心者にとって非常に良い設定であり、のデフォルトになりますGIT 2.0
一方、リモートで同じ名前を持つすべてのブランチをローカルmatching
にプッシュします。(現在の作業ブランチに関係なく)。これは、共有したくないブランチも含めて、潜在的に多くの異なるブランチがプッシュされることを意味します。
私の個人的な使用法では、通常、別のオプションを使用します。current
これは、現在の作業ブランチをプッシュします(変更のために常にブランチするため)。しかし、初心者のために私はお勧めしますsimple
push.defaultrefspec
が明示的に指定されていない場合にgitpushが実行するアクションを定義します。特定のワークフローには、さまざまな値が適しています。たとえば、純粋に中央のワークフロー(つまり、フェッチソースがプッシュ先と等しい)では、アップストリームがおそらく必要なものです。可能な値は次のとおりです。
なし-refspecが明示的に指定されていない限り、何もプッシュ(エラーアウト)しないでください。これは主に、常に明示的にすることで間違いを避けたい人を対象としています。
current-現在のブランチをプッシュして、受信側で同じ名前のブランチを更新します。中央ワークフローと非中央ワークフローの両方で機能します。
アップストリーム-現在のブランチを、通常は変更が現在のブランチに統合されているブランチ(@ {upstream}と呼ばれます)にプッシュバックします。このモードは、通常プルするのと同じリポジトリ(つまり中央ワークフロー)にプッシュする場合にのみ意味があります。
シンプル-一元化されたワークフローでは、アップストリームブランチの名前がローカルブランチの名前と異なる場合にプッシュを拒否する安全性が追加されたアップストリームのように機能します。
通常引っ張っているリモコンとは別のリモコンにプッシュするときは、現在のリモコンとして機能します。これは最も安全なオプションであり、初心者に適しています。
このモードはGit2.0のデフォルトになります。
マッチング-両端で同じ名前のすべてのブランチをプッシュします。これにより、プッシュするリポジトリは、プッシュされるブランチのセットを記憶するようになります(たとえば、常にmaintとmasterをプッシュし、他のブランチがない場合、プッシュするリポジトリには、これら2つのブランチと、ローカルのmaintとmasterが含まれます。そこにプッシュされます)。
このモードを効果的に使用するには、git pushを実行する前に、プッシュするすべてのブランチをプッシュする準備ができていることを確認する必要があります。このモードの全体的なポイントは、すべてのブランチを一度にプッシュできるようにすることです。通常、1つのブランチのみで作業を終了して結果をプッシュする場合、他のブランチは未完了ですが、このモードは適していません。また、このモードは、共有中央リポジトリにプッシュするのには適していません。他の人がそこに新しいブランチを追加したり、コントロール外の既存のブランチの先端を更新したりする可能性があるためです。
これは現在デフォルトですが、Git2.0はデフォルトをシンプルに変更します。