LoginSignup
635

More than 5 years have passed since last update.

fetch と pullの違い

Posted at

git fetchgit pullの違いをわかりやすく書いてあるのが見つからなかったので。

git fetch

リモートからデータを取ってくる。
ただし取ってくるだけで、それ以外は何もしない。

例えば

A->B # master
A->B->C->D # origin/master

だった場合,git fetchはCとDをダウンロードしてきて、origin/masterとして保存する。
しかしローカルのmasterには一切手を触れないため、masterとorigin/masterは別のコミットを指す。

この状態でgit checkout masterとかすると、多分こんな感じのメッセージが出る

Switched to branch 'master'
Your branch is behind 'origin/master' by 2 commit, and can be fast-forwarded.

これは、このあと2回コミットされてるけど早送り(衝突が無いのでそのまま最新版に)できるよ!
ってことらしく,git merge origin/masterを実行することで、ローカルのmasterもorigin/masterを指す。

git pull

git pullは、上のgit fetchgit merge origin/masterまでを
全部まとめてやってくれる。
らくちん。

ただし、mergeしたくない時にやってしまうと大変なことになる。
そんな時は、戻したいコミットのIDを調べて、git reset --hard IDで元に戻せる。

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
635