git fetchとpullの違い

2019年5月22日

本稿ではgit fetchとpullの違いについて説明してきます。

fetchとpullの役割と違いを理解して、使い分けられるようにしましょう。

 

 

git fetchとは?

git fetchはリモートリポジトリの最新の履歴の取得のみを行うことができます。

取得したオミットは名前のないブランチとして取り込まれ、

この名前のないブランチはFETCH_HEADでチェックアウトできます。

 

git fetchを使用するシーン

git fetchではローカルリポジトリは更新されないので、
リモートリポジトリの更新内容を確認したい時に使用します。

 

git pullとは?

git pullはリモートリポジトリの最新の履歴を取得してきて、

ローカルブランチにマージします。

 

git pullを使用するシーン

git pullはgit fetchとgit mergeの両方を実行してくれる便利なコマンドのため、

リモートリポジトリのみ履歴の更新があり、ローカルリポジトリには履歴の更新がない場合によく使用します。

一点注意すべきなのは、リモートリポジトリとローカルリポジトリで履歴の更新があり、

なおかつ更新ファイルが被ってしまうと競合が発生してマージできなくなってしまうので、

その場合は自分で競合を解決していきましょう

 

git fetchとpullのまとめ

  • git fetchはリモートリポジトリの最新の履歴を取得してくるのみなので、
    リモートリポジトリの変更内容を確認するときに使用することが多い
  • git pullはgit fecth + git merge。
    リモートリポジトリの最新の履歴を取得してきてローカルリポジトリにマージする。
    リモートとローカルで更新が入っているかる更新ファイルが被ると競合が発生して、
    マージできなくなってしまうので、自分で競合を修正する必要がある。