自己紹介
どうも、isso0424です。又の名をいっそうです。
高専2年生でぷよぐやみんぐを趣味でやっています。
何やってるかは以下のtwitterやGitHub見てもらえればわかると思います。
twitter
GitHub
今回は僕がGit&GitHub解説を進めていきます。
お目次
- fetch
- pull
お説明
fetch
fetchが今回最初に説明するコマンドになります。
これはリモートリポジトリから変更を引っ張ってくるコマンドです。
使い方
git fetch [リモートリポジトリ]
これで終わりって言えば終わりなんですけど、具体的な例を見てみましょう。
例
もともと以下のようなファイルがあったとします。
I'm genius.
yes
そこに、origin/masterにAさんが変更をpushします。
変更内容は以下の通りです。
I'm genius.
no
そして、この状態であなたが
I`m noob.
yes
という変更を加えようとします。
しかしまだ待ってください。
この状態でファイルを変更しようとするとCONFLICTします。
なぜなら、リモートの変更とローカルの変更が矛盾して衝突してしまうからです。
は?CONFLICT?しらねえよ
って人は今すぐ
第五回を見てきてください。
このときに,前述のfetchを使います。
というわけで編集前に
git fetch origin
を実行します。
これによりリモートの変更がローカルに適用され、以下のようなログが出ます。
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 223 bytes | 223.00 KiB/s, done.
From URL
hoge..fuga master -> origin/master
これはリモートの変更取ってきたぞ!
というGit君からの喜びの叫びです。
さて、変更は取ってきただけでは意味がありません。
これをローカルに適用するためマージしましょう。
git merge origin/master
origin/master: remoteリポジトリ"origin"のmasterブランチ
これで、リモートの更新にローカルが追いついたため、pushできるようになります。
この状態で前述の変更を行い、pushすることができます。
git push origin master
これで世界に平和が訪れました。
pull
前回と合わせてmerge,fetchについて学んできました。
毎回fetchしてからmergeしても良いのですが段々面倒になってきます。
そんなワガママな希望にも答えてくれるのがgit君です。
gitにはpullというコマンドがあります。
使い方
git pull [リモートリポジトリ名] [リモートリポジトリのブランチ名]
これにより現在作業しているブランチにリモートリポジトリのブランチをマージすることができます。
つまり、pullはfetchとマージを組み合わせたコマンドと考える事ができます。
例
先程の例を流用します。
先程の例でfetchをしたタイミングで
git pull origin master
を実行します
この時点で、origin/masterがmasterに対してマージされます。
そのため、この時点でファイルの編集に入ることができます。
あとは先程の例のマージ後と同じです。
おまとめ
- リモートの変更内容を取ってくる時はfetch
- リモートのあるブランチの最新状態と同期させたい時はpull
次回はGitHubのPullRequest/Issueについて説明します。
おリンク
1回目〜〜インストール編〜〜
2回目〜〜設定編〜〜
3回目〜〜基本技能編〜〜
4回目〜〜平行世界編-1〜〜
5回目〜〜平行世界編-2〜〜
6回目〜〜GitHub編〜〜
7回目〜〜fetch/pull編〜〜 ←イマココ
8回目〜〜Issue/PR編〜〜