Pulling a branch means to fetch it and merge it. See also git-pull(1).
Pushing a branch means to get the branch’s head ref from a remote repository , find out if it is an ancestor to the branch’s local head ref is a direct, and in that case, putting all objects, which are reachable from the local head ref, and which are missing from the remote repository, into the remote object database, and updating the remote head ref. If the remote head is not an ancestor to the local head, the push fails.
Fetching a branch means to get the branch’s head ref from a remote repository, to find out which objects are missing from the local object database, and to get them, too.
To reapply a series of changes from a branch to a different base, and reset the head of that branch to the result.