挨拶
初めまして、日本システム開発株式会社の鈴木です。
技術者として更なる向上を目指すためQiitaアウトプットをする取り組みを行っています。
技術者としては経験が浅く発信内容はとにかく試したものの覚書になります。
業務中git操作とローカルにあるファイルが更新されるタイミングを勘違いしていることがあったため本稿ではgit操作とローカルブランチのファイルが更新されるタイミングについてまとめます。
テスト環境
githubにbranch_testリポジトリを作成しローカル環境にbranch_testディレクトリ(ディレクトリA)とbranch_test2ディレクトリ(ディレクトリB)を作成しておきます。
確認
ディレクトリAにgit cloneコマンドでbranch_testリポジトリ(mainブランチ)を複製後、以下のようなoperation.txtを作成します。
プッシュを行っているためこの段階ではリモートとローカルは同期されています。
続いてディレクトリBでクローン。
この段階ではoperation.txtが生成され、内容も最新です。
ここで、new_branchブランチを作成し切り替えた後に、以下のように編集します。
その後、プッシュを行いブランチを公開します。
再びディレクトリAに戻りfetch、new_branchに切り替え。
ここまで行うとoperation.txtは「checkout」の記述がある 最新版が配置されます。
new_branchにあるディレクトリBでoperation.txtを再び以下のように更新し、プッシュ。
これでリモートのnew_branchブランチでもoperation.txtに「push after checkout」が記述されます。
この状態でnew_branchにあるディレクトリAでnew_branchブランチへチェックアウトを行うと、すでに指定のブランチであるため失敗、最新版にはなりません 。
さらにこの状態でローカル、リモートブランチをもとに新たなブランチを作成する場合、 いずれの場合も最新版にはなりません。
最後に、リモートブランチをもとに作成したブランチにいるディレクトリBでpullを行うと、 最新版に更新される。
まとめ
cloneを行う→最新版に同期される
ローカルに存在しないブランチにcheckout→最新版に同期される
すでにローカルに存在するブランチにcheckout→最新版に同期されない
リモートに存在するブランチを元にブランチを作成→最新版に同期されない
pullを行う→最新版に同期される
ブランチ状態によりcheckoutだけで最新版になることは保証されないため、手順書などでは必ずpullするようにしましょう。