1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Gitでチェックアウトする際に同期されるかのまとめ

Posted at

挨拶

初めまして、日本システム開発株式会社の鈴木です。
技術者として更なる向上を目指すためQiitaアウトプットをする取り組みを行っています。
技術者としては経験が浅く発信内容はとにかく試したものの覚書になります。
業務中git操作とローカルにあるファイルが更新されるタイミングを勘違いしていることがあったため本稿ではgit操作とローカルブランチのファイルが更新されるタイミングについてまとめます。

テスト環境

githubにbranch_testリポジトリを作成しローカル環境にbranch_testディレクトリ(ディレクトリA)とbranch_test2ディレクトリ(ディレクトリB)を作成しておきます。

確認

ディレクトリAにgit cloneコマンドでbranch_testリポジトリ(mainブランチ)を複製後、以下のようなoperation.txtを作成します。

image.png
この状態でコミット、プッシュまで行います。
画像1.png

プッシュを行っているためこの段階ではリモートとローカルは同期されています。

続いてディレクトリBでクローン。
画像2.png
この段階ではoperation.txtが生成され、内容も最新です。
ここで、new_branchブランチを作成し切り替えた後に、以下のように編集します。
image.png
その後、プッシュを行いブランチを公開します。
画像3.png

再びディレクトリAに戻りfetch、new_branchに切り替え。
画像4.png
ここまで行うとoperation.txtは「checkout」の記述がある 最新版が配置されます。

new_branchにあるディレクトリBでoperation.txtを再び以下のように更新し、プッシュ。
image.png
これでリモートのnew_branchブランチでもoperation.txtに「push after checkout」が記述されます。
この状態でnew_branchにあるディレクトリAでnew_branchブランチへチェックアウトを行うと、すでに指定のブランチであるため失敗、最新版にはなりません
画像5.png
さらにこの状態でローカル、リモートブランチをもとに新たなブランチを作成する場合、 いずれの場合も最新版にはなりません。

最後に、リモートブランチをもとに作成したブランチにいるディレクトリBでpullを行うと、 最新版に更新される。
画像7.png

まとめ

cloneを行う→最新版に同期される
ローカルに存在しないブランチにcheckout→最新版に同期される
すでにローカルに存在するブランチにcheckout→最新版に同期されない
リモートに存在するブランチを元にブランチを作成→最新版に同期されない
pullを行う→最新版に同期される

ブランチ状態によりcheckoutだけで最新版になることは保証されないため、手順書などでは必ずpullするようにしましょう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?