Overview
Push affects only the branch you specify. Local branches that have not been pushed remain unavailable on the remote.
Fetch provides separation between downloading and merging. This gives more control over when the working directory changes.
Pull is more convenient because it combines the operations, but it also applies the remote updates immediately through a merge.
A pull request does not replace committing or pushing. The proposed commits must already exist on a branch available to GitHub.
A pull request also does not make the decision automatically. Reviewers still need to inspect the comparison and decide whether the changes should be merged.