開発に入って数ヶ月後、origin/mainってなんやねんと気になって調べ、リモート追跡ブランチを認識しgitが完璧になった気がしました。
リモート追跡ブランチを理解することで、git fetch, git mergeなど他のものの解像度も上がりました。
githubでのコード管理を想定しています。
リモート追跡ブランチとは?
origin/mainはリモートリポジトリoriginのmainブランチを追っている追跡ブランチ。
普段作業しているローカルブランチとは別のもの。
(githubを使っている場合、リモートリポジトリはgithubのリポジトリになります)
上記の記事を読んで、リモート追跡ブランチを認識しました。
その後、git fetch, git mergeが何をしているのかわかるようになりました。
git fetch
git fetch
上記で更新がかかるのはリモート追跡ブランチ
git fetch -p
上記を実行することで、リモート追跡ブランチの更新に加え、リモートリポジトリで削除されたブランチをリモート追跡ブランチ上で削除する。(git fetch -pを実行しないと、リモート追跡ブランチは増え続ける)
git merge
git merge origin/main
現在のブランチにリモート追跡ブランチのorigin/mainをマージ
リモート追跡ブランチをローカルに作成
git checkout -t origin/xxxxx
リモート追跡ブランチorigin/xxxxxをローカルに作成してそのブランチが現在のブランチになります。(git branchを打つと現在のブランチがxxxxx)
他のメンバーがaaaaaブランチをpushした際、そのブランチをローカルに持ってきたいとき、git fetchでリモート追跡ブランチを更新してから、git checkout -t origin/aaaaaを実行してローカルの作業中のブランチをaaaaaブランチに変更できます。
まとめ
リモート追跡ブランチについて理解したことで、fetch, merge chekcout -t などのコマンドに関する理解が深まりました。