When you execute a pull, the changes from the remote branch automatically merge into your current local branch. If you want to obtain the remote changes but not have them merged into your current local branch, you can execute the git fetch command.
Fetch will download the changes from remote that do not yet exist on your local branch. The FETCH_HEAD ref can be used to track the fetched changes from the remote repository.
The revision history will look like below when both the remote and local branch contain different descendants.
Once changes are fetched, you can apply those changes to your local repository by merging in FETCH_HEAD or by executing a pull.
Once FETCH_HEAD has been merged, the revision history will yield the same result as a git pull operation. Pull is essentially a simultaneous execution of fetch and merge operations.