🐷
【Git】デフォルトブランチより更新が遅れているリモートブランチをローカルにpullする
こんにちは、りょうです。本記事ではGitで最新の変更が取り込まれていないブランチをローカルにpullする(表現が適切かは微妙です)際に、これまで知らなかったコマンドとGitについて学びが深まったので、そのことについてまとめていきます。
シナリオとしては、以下の通りです(図を見たほうがわかりやすいと思います。)
- developブランチ(デフォルトブランチ)からfeatureブランチをはやして開発を進めている
- developブランチにfeatureブランチをマージしている状態
- 一方、masterブランチ(本番環境)にはまだdevelopブランチをマージしていない
- この状況でまだローカルにmasterブランチがないのでリモートのorigin/masterをローカルに取り込みたい。
ブランチについて理解していれば上記のようなケースも簡単に解決できるんですね。
結論
git fetch origin master:master
上記のコマンドでリモートのmasterブランチから直接新しいローカルのmasterブランチを作成し、リモートの状態をそのままローカルに反映できます。
そもそもfetchは何をしているのか?
git featch origin master
-
git fetch
ではリモートのmasterブランチからの最新の変更をローカルに取り込んでいる - ローカルに反映が必要なら、
git merge origin/master
を実行 - fetchとmergeをまとめてやっているのが
git pull
別の方法(コマンド)
- リモートの
master
ブランチの最新情報を取得する
下記のコマンドで、リモートのmaster
ブランチの最新情報をorigin/master
というリモート追跡ブランチに反映しています。
git fetch origin master
- 新しいローカル
master
ブランチを作成する
下記のコマンドで、origin/master
ブランチをベースに新しいローカルmaster
ブランチを作成します。
git branch master origin/master
- 新しく作成した
master
ブランチに切り替える
git switch master
まとめ
今回もgitについてのちょっとした学びを簡単な記事にしました。git fetch
はあまり使用しないので、理解が足りていませんでした。
引き続きちょっとつまずいた点があったら、自分のメモ的な要素も兼ねて記事にしていきます。
この記事がどなたかの参考になれば幸いです。最後まで読んでいただきありがとうございました。
Discussion