Skip to main content

Command Palette

Search for a command to run...

Git for absolute beginners

Learn Git Basics, Core Concepts, and Essential Commands

Updated
6 min read
Git for absolute beginners

If you've ever worked on a project and thought, "I wish I could go back to how this was yesterday," or accidentally deleted something important and panicked Git is here to save the day. Let me walk you through what Git is and why developers can't live without it.


What is Git ?

Think of Git as a time machine for your code. It's a distributed version control system that tracks every change you make to your files. Created by Linus Torvalds in 2005 (yes, the same person who created Linux), Git has become the backbone of modern software development.

But what does "distributed" actually mean? Unlike older systems where everything lived on one central server, Git gives every developer a complete copy of the project history on their own computer. You can work offline, experiment freely, and sync up with your team whenever you're ready.

Why Git is Used ?

1. Never Lose Your Work

Git keeps a complete history of every change. Accidentally broke something? Just roll back to a working version. It's like having infinite "undo" for your entire project.

2. Collaboration Made Simple

Multiple people can work on the same project simultaneously without stepping on each other's toes. Git intelligently merges everyone's changes and helps resolve conflicts when they occur.

3. Experimentation Without Fear

Want to try a crazy new feature but worried it might break everything? Create a branch, experiment all you want, and if it doesn't work out, just delete it. Your main code stays safe.

4. Professional Standard

Whether you're applying for jobs or contributing to open source, Git knowledge is expected. GitHub, GitLab, and Bitbucket—all the major platforms are built around Git.

5. Track Who Changed What and Why

Every change includes a message explaining what was done and who did it. This creates an invaluable audit trail for understanding how your project evolved.

Git Basics and Core Terminologies

Let's break down the essential concepts you need to understand:

Repository (Repo)

A repository is your project folder that Git is tracking. It contains all your files plus a hidden .git folder where Git stores its magic—the complete history of every change.

Working Directory

This is your normal project folder where you edit files. It's what you see in your file explorer or code editor.

Staging Area (Index)

Think of this as a preparation zone. Before Git permanently saves your changes, you add them to the staging area. This lets you carefully choose exactly what to include in your next save point.

Commit

A commit is a snapshot of your project at a specific moment in time. Each commit has a unique ID and includes a message describing what changed. It's like taking a photograph of your code that you can return to later.

Branch

A branch is an independent line of development. The default branch is usually called main or master. When you create a new branch, you're creating a parallel universe where you can make changes without affecting the main timeline.

HEAD

HEAD is simply a pointer showing you which commit you're currently looking at—usually the latest commit on your current branch.

Remote

A remote is a version of your repository hosted somewhere else, typically on GitHub or GitLab. It's how you share your work and collaborate with others.

Clone

Cloning creates a complete copy of a remote repository on your local machine, including all its history.

Merge

Merging combines changes from different branches. When you finish a feature on a separate branch, you merge it back into your main branch.

Common Git Commands

Here are the commands you'll use constantly, explained with real-world context:

Setting Up Git

bash

# Tell Git who you are (do this once)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# Start tracking a new project
git init

# Copy an existing project from GitHub/GitLab
git clone https://github.com/username/project.git

Daily Workflow Commands

bash

# Check what's changed
git status

# Add specific files to staging
git add filename.txt

# Add all changed files to staging
git add .

# Save your staged changes permanently
git commit -m "Add user login feature"

# See your commit history
git log

# See a simplified commit history
git log --oneline

Working with Branches

bash

# Create a new branch
git branch feature-name

# Switch to a branch
git checkout feature-name

# Create and switch to a new branch in one command
git checkout -b feature-name

# List all branches
git branch

# Merge another branch into your current branch
git merge feature-name

# Delete a branch you no longer need
git branch -d feature-name

Collaborating with Others

bash

# Upload your commits to GitHub/GitLab
git push origin main

# Download new changes from GitHub/GitLab
git pull origin main

# See all remote connections
git remote -v

Fixing Mistakes

bash

# Undo changes in a file (before staging)
git checkout -- filename.txt

# Remove a file from staging (but keep your changes)
git reset filename.txt

# Go back to a previous commit (careful with this!)
git reset --hard commit-id

# Create a new commit that undoes a previous commit
git revert commit-id

Useful Information Commands

bash

# See what changed in your files
git diff

# See what changed in staged files
git diff --staged

# Show details about a specific commit
git show commit-id

A Basic Developer Workflow

Let me show you how a typical day of coding with Git looks:

Morning: Starting a New Feature

bash

# Make sure you have the latest code
git pull origin main

# Create a new branch for your work
git checkout -b add-dark-mode

# Make your changes in your editor...

Afternoon: Saving Your Progress

bash

# Check what you've changed
git status

# Stage your changes
git add styles.css
git add theme-switcher.js

# Commit with a descriptive message
git commit -m "Implement dark mode toggle with user preference saving"

End of Day: Sharing Your Work

bash

# Push your branch to the remote repository
git push origin add-dark-mode

# Open a pull request on GitHub/GitLab for review

Next Day: After Approval

bash

# Switch back to main branch
git checkout main

# Get the latest changes (including your merged feature)
git pull origin main

# Delete your old feature branch
git branch -d add-dark-mode

Visual Understanding

The Three States of Git

The Three States of Git

When you modify a file, it's in your working directory. Using git add moves it to the staging area. Finally, git commit permanently saves it to your repository.

Repository Structure

my-project/
├── .git/                    (Git's database - don't touch!)
│   ├── objects/             (All your commits and files)
│   ├── refs/                (Branch pointers)
│   └── HEAD                 (Current branch pointer)
├── src/
│   └── main.js
├── README.md
└── .gitignore               (Files to ignore)

Commit History Flow

main branch:  A ← B ← C ← D ← E (HEAD)
                    ↖
feature branch:      F ← G

Each letter represents a commit. The main branch has commits A through E. A feature branch split off at commit B and has its own commits F and G.


Git feels overwhelming at first I won't lie to you. But here's the secret: you don't need to memorize everything. Start with the basics: init, add, commit, push, and pull. These five commands will cover 80% of your daily work.

git for absolute begineers