# Git **Git** is a version control system for tracking changes to code. Initialize a folder as a git repository to save snapshots of your work, branch to experiment safely, and synchronize with teammates via remotes. Every change is recorded as a **commit**, a snapshot of your project at a point in time. You can view history, revert to old commits, and understand who changed what and why. Git is decentralized—each person gets a full copy of the repository's history, so you work offline and sync with others when ready. ```bash $ git init # create a repository $ git add . # stage changes $ git commit -m "message" # create a commit $ git push origin main # push to remote ``` On a multi-person project, branching lets each developer work in isolation without conflicts. Create a branch, make changes, and merge back when ready. ## Concepts 1. [[git-repositories|Repositories]] 2. [[git-commits|Commits]] 3. [[git-staging|Staging]] 4. [[git-branches|Branches]] 5. [[git-merging|Merging]] 6. [[git-rebasing|Rebasing]] 7. [[git-remotes|Remotes]] 8. [[git-pushing-and-pulling|Pushing and pulling]] 9. [[git-undoing|Undoing changes]] 10. [[git-history|History and viewing commits]] 11. [[git-tags|Tags]] 12. [[git-conflicts|Conflicts and conflict resolution]] 13. [[git-stashing|Stashing]] 14. [[git-cherry-pick|Cherry-pick]] 15. [[git-hooks|Hooks]] 16. [[git-workflows|Workflows]]