Git for Beginners: Stop Fearing Version Control, Start Loving It
Git tutorial for beginners — learn the essential git commands, branching, merging, and GitHub workflow with real examples that make version control click.
Get more content like this on Telegram!
Daily AI tips, notes & resources — free
Git for Beginners: Stop Fearing Version Control, Start Loving It
I deleted my entire project once. No backup. No way to recover it. Six hours of work, gone.
Two weeks later, I finally learned Git — and I've never lost code since.
Most beginners see Git as intimidating. The terminology (commit, branch, merge, rebase, HEAD) sounds like jargon. The command line feels cryptic. There are dozens of commands you could learn.
But here's the truth: 90% of your daily Git usage comes down to about 10 commands. The rest you look up when you need it.
This guide teaches you those 10 commands, the mental model that makes everything click, and the real-world workflow used by every professional developer.
What Git Actually Does
Git tracks changes to files over time. Instead of saving new versions (project_v2_final_FINAL.zip), Git saves snapshots called commits.
Initial → Add nav bar → Fix mobile layout → Add dark mode → Fix bug
(c1) (c2) (c3) (c4) (c5)
Each commit stores exactly what changed, who changed it, and when. You can:
- Go back to any previous commit
- See exactly what changed between any two points
- Experiment on separate branches without risking working code
- Collaborate with others without overwriting each other's changes
Setup: One-Time Configuration
# Tell Git who you are (used in commit history)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# Set VS Code as your default editor (optional but helpful)
git config --global core.editor "code --wait"
# Verify your config
git config --list
The Core Workflow: 5 Commands You'll Use Daily
1. git init — Start a new repository
mkdir my-project
cd my-project
git init
This creates a hidden .git folder that tracks everything. Your project is now a Git repository.
For an existing project on GitHub, clone it instead:
git clone https://github.com/username/repo-name.git
2. git status — See what's changed
git status
Output:
On branch main
Changes not staged for commit:
modified: index.html
Untracked files:
styles.css
Run git status constantly. It tells you exactly what state your files are in.
3. git add — Stage changes for commit
git add styles.css # Stage one file
git add index.html styles.css # Stage multiple files
git add . # Stage everything (be careful)
Staging is a preparation step — you're saying "these are the changes I want to include in my next commit." This lets you make multiple changes but commit them in logical groups.
4. git commit — Save a snapshot
git commit -m "Add navigation bar with responsive mobile menu"
Every commit needs a message. Write messages that explain why the change was made:
# Bad — doesn't explain anything
git commit -m "fix"
git commit -m "changes"
# Good — explains the change and context
git commit -m "Fix login redirect loop when session expires"
git commit -m "Add loading state to search button while fetching"
5. git log — View history
git log --oneline
Output:
a3f8c12 Fix login redirect loop when session expires
b7e2d04 Add dark mode toggle
c1a9f33 Implement search functionality
d8b5e21 Initial project setup
Each line is a commit with its unique ID (first 7 characters) and message.
Working with GitHub: Push and Pull
GitHub stores your repository remotely. The workflow:
# Connect your local repo to GitHub (first time only)
git remote add origin https://github.com/username/repo.git
# Push your commits to GitHub
git push origin main
# Get the latest changes from GitHub (if collaborating)
git pull origin main
First-Time Push to New GitHub Repo
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/username/my-project.git
git push -u origin main
The -u flag sets the upstream — after this, just git push works without specifying the remote and branch.
Branching: The Feature Development Workflow
Branches let you work on new features without touching your working main code.
# Create and switch to a new branch
git checkout -b feature/dark-mode
# Make your changes, then commit
git add .
git commit -m "Add dark mode color scheme"
# Push the branch to GitHub
git push origin feature/dark-mode
# Merge back into main when done
git checkout main
git merge feature/dark-mode
# Delete the branch (it's merged, no longer needed)
git branch -d feature/dark-mode
Viewing Branches
git branch # List local branches
git branch -a # List all branches (including remote)
git branch -d name # Delete merged branch
The standard professional workflow:
mainalways has working, deployable code- Every feature or fix gets its own branch
- Open a Pull Request on GitHub to merge when done
- Team reviews the code before it merges
Undoing Mistakes
This is where Git's power really shows.
Undo unstaged changes
git checkout -- filename.html # Old syntax
git restore filename.html # Git 2.23+ syntax
Reverts the file to the last committed state. Irreversible — the changes are gone.
Unstage a file
git restore --staged filename.html
Removes the file from staging but keeps your changes in the working directory.
Undo the last commit (keep changes)
git reset --soft HEAD~1
Removes the last commit but keeps the files staged. Useful when you committed too early or with the wrong message.
Undo a commit safely (for shared branches)
git revert HEAD
Creates a new commit that reverses the last commit's changes. Safe because it doesn't rewrite history — crucial on shared branches.
Essential Git Commands Reference
git init # Initialize repository
git clone <url> # Clone remote repository
git status # See changed files
git add <file> # Stage file
git add . # Stage all changes
git commit -m "message" # Commit staged changes
git log --oneline # View compact history
git diff # See unstaged changes
git diff --staged # See staged changes
git push origin <branch> # Push to remote
git pull origin <branch> # Pull from remote
git checkout -b <branch> # Create and switch branch
git checkout <branch> # Switch branch
git merge <branch> # Merge branch into current
git branch -d <branch> # Delete merged branch
git stash # Temporarily save changes
git stash pop # Restore stashed changes
.gitignore: Files Git Should Never Track
Create a .gitignore file in your project root to exclude files:
# Dependencies
node_modules/
# Environment variables (never commit these!)
.env
.env.local
# Build outputs
dist/
build/
.next/
# Editor files
.vscode/settings.json
.DS_Store
# Logs
*.log
npm-debug.log
For a template, GitHub provides .gitignore templates for every language and framework when you create a new repository.
Once you're comfortable with Git basics, start building real projects and deploying them. Our web developer roadmap shows where Git fits in the learning sequence. For debugging deployed sites, our Chrome DevTools guide is the next essential skill.
Frequently Asked Questions
What is Git and why do I need it?
Version control for your code. Tracks changes, enables collaboration, lets you undo mistakes and experiment safely. Every professional developer uses it daily.
Git vs GitHub?
Git is the local version control software. GitHub hosts repositories remotely for backup and collaboration.
What is a commit?
A saved snapshot of your project at a specific moment. Like a video game checkpoint you can always return to.
When should I use branches?
For every new feature, bug fix, or experiment. Keep main stable and always deployable.
How do I undo a mistake?
Before staging: git restore filename. After staging: git restore --staged filename. After committing (shared branch): git revert HEAD. Never use git reset --hard on shared branches.
Frequently Asked Questions
AiTechWorlds Team
✓ Verified WriterThe AiTechWorlds team is passionate about AI, technology, and education. We create high-quality, research-backed content to help you learn, grow, and succeed in the modern digital world.
Related Articles
Understanding APIs: A Beginner's Story About How Apps Talk
API tutorial for beginners — understand what APIs are, how REST APIs work, HTTP methods, JSON, authentication, and how to call APIs in JavaScript with real examples.
The Web Developer's Guide to Chrome DevTools (Hidden Features)
Chrome DevTools guide for web developers — master the Elements panel, Network tab, Console, Performance profiler, and hidden features most developers never use.
CSS Grid vs Flexbox: When to Use Which Layout Method
CSS Grid vs Flexbox explained clearly — understand the difference, when each layout method excels, and how to choose the right one for every UI pattern.
Docker for Beginners: Containers Explained Without the Jargon
Docker tutorial for beginners — learn containers vs VMs, Docker images, Dockerfiles, docker-compose, and how to containerize a real web application step by step.