git を利用した開発サイクル(フロー)はいくつかパターンがあるのですが、多分一番シンプルで個人開発向きな github flow を使いたいんだと思います。
このフローの場合、以下のようなやり方をします。
なお、github を origin とします。
- ローカルの master(main) ブランチから、新しいブランチ(feature ブランチ)を作成する。
- 新しいブランチ上で開発し、コミットを重ねる。
- feature ブランチを、github(origin) へ push する。
- github 上で、push された feature ブランチから pull request を作成する。
- 必要があれば pull request 上でコードレビューを行う。
- コードに問題がなければ、github 上で merge する。
- origin の master(main) ブランチに、新しいブランチの内容が取り込まれる。
- ローカルで git fetch や git pull origin master(main) をして、origin/master(main) の内容をローカルに反映させる。
こんな流れになります。
origin である github が開発中心なので、master(main) ブランチへのマージは github 上で行います。ローカルで master(main) ブランチへのマージをやったり、ローカルの master(main) ブランチを origin へ push してはいけません。
今の状況を改善するためにはローカルから origin への master(main) ブランチを push することになりそうですが、原則的にやるとマズい行為です。
git はなかなか仕組みが分かりづらいんですが、ローカルと github(origin) は完全に独立していて、自動で同期されたりはしません。これは git が分散型バージョン管理システムと言われる所以で、例えば複数人で開発している場合、それぞれのローカルと github はあくまで別個の存在であり、git コマンドを駆使して内容を反映させていくことになります。
github(origin) は複数人の開発の場合その中心として存在するので、特にベースブランチである master(main) をローカルの内容で強制的に書き換えてしまうと、他の人が維持している master(main) ブランチとの整合性が取れなくなってしまうんですね。一人で開発している分には重要性が分かりにくいかもしれませんが、今後チーム開発をしていくことになるならかなり重要なので、必ず守るようにしてください。
master(main) ブランチ壊されると非常に困ることになるので。。