Overview
Remote collaboration has two layers: synchronization between local and remote repositories, and review before branch changes are merged.
Push sends local commits to a remote branch. Fetch downloads remote updates without applying them to the working directory. Pull fetches and merges in one operation. A pull request asks collaborators to review one branch and merge it into another, usually into main.