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.

Fetch respective origins of both local repository and remote repository
  under a state where both repositories have commits advanced from B
Revision history when remote and local branches have different masters.

Once changes are fetched, you can apply those changes to your local repository by merging in FETCH_HEAD or by executing a pull.

After merging, changes will be applied to the local repo.

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.