# A Practical Guide to Git
Modify through: [](https://codespaces.new/jmrecodes/git-guide)
Welcome to this comprehensive guide to Git! Whether you are a beginner just starting your journey in version control or an experienced developer looking to sharpen your skills, this guide is for you.
My goal is to provide a simplified, streamlined, but complete walkthrough of Git's fundamentals and its more advanced features. We'll cover everything from your first commit to complex history manipulation.
## Table of Contents
1. [**Introduction to Git**](https://hackmd.io/@jmrecodes/ry-5too7gx)
* What is Git?
* Why is Version Control Important?
* A Quick Look at Git's Philosophy
2. [**Getting Started**](https://hackmd.io/@jmrecodes/Hynqtos7ge)
* Installing Git
* First-Time Git Configuration (`git config`)
* Creating Your First Repository (`git init`)
3. [**Basic Commands: The Day-to-Day Workflow**](https://hackmd.io/@jmrecodes/H1FiYji7xl)
* The Three States: Working Directory, Staging Area, and Repository
* Checking Status (`git status`)
* Adding Files to the Staging Area (`git add`)
* Committing Changes (`git commit`)
* Viewing Commit History (`git log`)
* Ignoring Files (`.gitignore`)
4. [**Branching and Merging**](https://hackmd.io/@jmrecodes/ByLhtoimee)
* What is a Branch?
* Creating and Switching Branches (`git branch`, `git checkout`, `git switch`)
* Merging Branches (`git merge`)
* Resolving Merge Conflicts
5. [**Working with Remotes**](https://hackmd.io/@jmrecodes/S146Fio7eg)
* Understanding Remotes
* Adding a Remote Repository (`git remote add`)
* Fetching and Pulling from Remotes (`git fetch`, `git pull`)
* Pushing to Remotes (`git push`)
6. [**Advanced Topics: Rewriting History & More**](https://hackmd.io/@jmrecodes/r1VAYoimel)
* Interactive Rebase (`git rebase -i`)
* Cherry Picking Commits (`git cherry-pick`)
* Resetting Commits (`git reset`)
* A practical example combining `cherry-pick` and `reset`
---
Ready to dive in? Start with the [Introduction to Git](https://hackmd.io/@jmrecodes/ry-5too7gx).