1. ホーム
  2. git

[解決済み] なぜ新しいブランチを明示的にプッシュする必要があるのですか?

2022-05-02 17:08:32

質問

の初心者です。 git と練習しているところです。ローカルブランチを作成したのですが、その際に git push のブランチがリポジトリにアップロードされませんでした。実際にやってみないとわからない。 git push -u origin --all .

これはなぜでしょうか?ブランチとは、デフォルトでプッシュされる新しい変更ではないのですか? なぜ二番目のコマンドを実行する必要があるのでしょうか?

解決方法は?

実際の理由は、新しいレポ(git init)で、そこに はブランチがない (但し master 分岐が全くない、分岐がゼロ)

そのため、初めてプッシュする際に 上流レポ (一般的には ) の場合、そのアップストリームリポには同名のブランチがありません。

そして

どちらの場合も、上流の空のレポにはブランチがないため。

  • 一致する名前のブランチはまだありません。
  • 上流のブランチが全くない(同名のブランチがあってもなくても!トラッキングがあってもなくても)。

つまり、あなたのローカル まず プッシュではわからない。

  • プッシュ先
  • 何をプッシュするか (リモート追跡ブランチとして記録されている、あるいは同名の上流ブランチが見つからないため)

を最低限行う必要があるわけです。

git push origin master

でも、そればかりしていると、あなた

  • は、上流の master ブランチを上流(今は空でないレポ)上に作成します: よろしい。
  • はしません。 記録 ローカルブランチの' master ' を上流にプッシュする必要があります ( origin ) ' master ' (上流ブランチ): だめです。

そのため、最初のプッシュでは、aを行うことが推奨されます。

git push -u origin master

これで記録されるのは origin/master として リモートトラッキングブランチ を自動的にプッシュし、次のプッシュで master から origin/master .

git checkout master
git push

そして、これもプッシュポリシーで動作する ' current または' upstream '.

いずれの場合も、最初の git push -u origin master を実行すると、シンプルな git push で master を正しい上流ブランチにプッシュし続けることができます。