In simple terms, the difference between the two Git
commands is that
git pull
is composed by a git fetch
followed by a git merge
.
When you use git pull
, Git
will automatically merge any pulled commits into the branch you are currently working in, without letting you review them first. You will get a prompt only if there is conflict found during automatic merging.
When you use git fetch
, Git
retrieves any commits from the target branch that do not exist in your current branch and stores them in your local repository
. However, it will not merge them with your current branch. To integrate the new commits into your current branch, you need to use git merge
manually.
This command is particularly useful if you need to keep your repository up to date, but are working on something that might break if you merge your files.
For example, if you will go offline and you need to have those commits available to you but cannot merge at the time, using git fetch
you will download the new commits to your machine without affecting your current code. Later you will be able to merge the new commits to your branch as/when you please.