What is the difference between 'git pull'and 'git fetch'?

Moderator Note:この質問にはすでに67件の回答が投稿されています(そのうちのいくつかは削除されています)ので、次の質問を投稿する前に***新しいことに貢献しているかどうかを考えてみてください。

git pull "と "git fetch "の違いは何ですか?

ソリューション

最も簡単に言えば、git pullgit fetchの後にgit mergeを行います。

いつでも git fetch を実行して、refs/remotes// にあるリモートトラッキングブランチを更新することができます。

この操作は、refs/heads 以下の自分のローカルブランチを変更することはなく、作業コピーを変更することなく安全に行うことができます。git fetch` をバックグラウンドの cron ジョブで定期的に実行している人の話も聞いたことがあります (ただし、これはお勧めできません)。

git pull`は、ローカルブランチをリモートバージョンに更新し、同時に他のリモートトラックブランチも更新するために行うものです。

Gitドキュメント - git pull:

デフォルトのモードでは、git pullgit fetch の後に git merge FETCH_HEAD を続けた略語です。

解説 (40)

git fetch` の使用例としては、最後にプルした後にリモートブランチで変更があったかどうかを次のように知ることができます。つまり、実際にプルする前にチェックすることができます。

git fetch
git diff ...origin

See: https://git-scm.com/docs/git-diff Regarding double- and triple-dot syntax in the diff command

解説 (5)
git-pull - 他のリポジトリやローカルブランチから取得してマージする
SYNOPSIS

git pull ... 説明

指定したパラメータで git-fetch を実行し、git-merge を呼び出して取得したヘッドを現在のブランチにマージします。 現在のブランチにマージします。--rebase を指定すると、git-merge の代わりに git-rebase を呼び出します。

なお、&lt には .(現在のディレクトリ) を として指定すると、ローカルリポジトリからヘッドを取り出します。 これは、ローカルブランチを現在のブランチにマージするときに便利です。 これは、ローカルブランチを現在のブランチにマージするときに便利です。

これは、ローカルブランチをカレントブランチにマージするときに便利です。また、git-pull 自体やその背後にある git-merge のためのオプションは、git-fetch のためのオプションよりも先に指定しなければならないことにも注意しましょう。

歴史をマージしてほしいときには pull しますが、ある人がこのあたりの記事に付けたように「コードがほしい」だけのときには fetch します。

解説 (3)