Pushing gets your committed [[Working directory (git)|local work]] onto the shared [[Remote repository (git)|remote repository]] - backed up and visible to collaborators. Until you push, a change lives only on your machine, travelling through git's components in order:
![[Git areas#^flow|Git areas flow]]
## Flow
1. See what changed in [[Working directory (git)|working directory]]: ![[git status#^cmd|status]]
2. Stage the wanted changes to [[Staging Area (git)|staging area]]: ![[git add#^cmd|add]]
3. Commit your changes to [[Local repository (git)|local repository]]: ![[git commit#^cmd|commit]]
4. Push the changes to [[Remote repository (git)|remote repository]]: ![[git push#^cmd|push]]
^flow
Remember about:
- [[Descriptive commit message]]
- [[Atomic Commits#^principle|Atomic commit]]