初心者プログラマのひとり勉強部屋

若葉マークのプログラマー☺️

【Git入門】git fechとgit pullについて

こんにちは

今回はgithubからgithubデスクトップにpullするときにfetchとpullの違いが曖昧だったため、この2つについて自分なりにまとめた備忘録です。

・originとmasterブランチとorigin/masterブランチ
・git fetch
・git pull
・git hubデスクトップ




■originとmasterブランチとorigin/masterブランチ
・origin:リモートリポジトリの場所(URL)
・masterブランチ:最初のコミットを行うとできるブランチ。リモートとローカルにある
・origin/masterブランチ:ローカルにある、リモートのmasterブランチを追跡するリモート追跡ブランチ

origin (URL)の内容は以下のコマンドで確認できます。
$git remote -v
origin https://github.com/ユーザ名/アプリ名.git (fetch)
origin https://github.com/ユーザ名/アプリ名.git (push)

このようなイメージです。

f:id:mocomo012:20200331223928p:plain
リモートとローカルのブランチ


originとmsterの違いは以下の記事が大変参考になりました
Git - originとmasterとは何か(初心者向け) - Qiita


■git fetch
リモートの変更をローカルのorigin/masterブランチに反映させます。この時点ではmasterブランチの内容は変更しません。
 使用例)originのmasterブランチの内容を取得
 $git fetch origin master


■git pull
簡単に言うと、fetch+mergeです。
リモートの変更をローカルのorigin/masterブランチに反映させ、origin/masterの内容をローカルのmasterブランチにmergeします。


このようなイメージになります。

f:id:mocomo012:20200331225932p:plain
fetchとpull



■githubデスクトップについて
自分がAブランチで作業をしていて、他のメンバーがリモートリポジトリに変更を加えoriginのmasterブランチにmergeしたとします。
そのリモートの変更情報をローカルに取ってくる時の流れとしては、以下のようになると思います。
git hubデスクトップ上で
①自分のAブランチの作業をcommit/pushしておく
②ローカルをmasterブランチに切り替え、リモート(origin)のmasterブランチをgit fetchする
③リモートのマスターブランチをpullする


①自分のAブランチの作業をcommit/pushしておく

f:id:mocomo012:20200401070513p:plain
comitte
まずコミットします。

f:id:mocomo012:20200401070550p:plain
push
作業ブランチAのコミットをpushします。
コマンドの場合)$git push origin A


②ローカルをmasterブランチに切り替え、リモートのmasterブランチをgit fetchする(fetchしただけだとorigin/masterが更新され、masterは更新されないためgithubデスクトップのmasterブランチのコードに変更はありません)

f:id:mocomo012:20200401070724p:plain
fetch
コマンドの場合)$git checkout master (masterブランチに移動します)
$git fetch origin master


(origin/masterの内容に変更があった場合)
③リモートのマスターブランチをpullする

f:id:mocomo012:20200401070844p:plain
git pull
コマンドの場合)$git pull origin master


githubデスクトップを利用するとこのようなイメージになります。

f:id:mocomo012:20200401075636p:plain
リモートとローカルとgithubデスクトップ



※コマンドは下記のサイトを大変参考にさせていただきました
Git超絶まとめ - Qiita



このような流れになります。
何か間違いございましたらご指摘ください🙇‍♀️