Git & GitHub: Your First Steps to Version Control

Table of contents
- ๐ Follow Me for More Content!
- Introduction
- What is Version Control?
- What is Git?
- What is GitHub?
- Getting Started: Installation and Setup
- Your First Git Repository
- Connecting to GitHub
- Essential Git Commands
- Working with Branches
- Collaboration Workflow
- Best Practices for Beginners
- Common Mistakes and How to Fix Them
- Practical Example: Building a Simple Website
- Advanced Tips for Beginners
- GitHub Features for Beginners
- Troubleshooting Common Issues
- What's Next?
- Conclusion
- Let's Stay Connected!

๐ Follow Me for More Content!
Before we dive into Git and GitHub, let's connect! I regularly share programming tutorials, tips, and insights:
๐ Portfolio: abdelhakim-baalla.vercel.app
๐ผ LinkedIn: abdelhakimbaalla
๐ผ๏ธ Instagram: abdelhakim.baalla
๐ง Dev.to: abdelhakim_baalla
Introduction
Have you ever worked on a project and wished you could go back to a previous version? Or maybe you're collaborating with friends on a coding project and keeping track of changes is becoming a nightmare?
Welcome to the world of version control! Today, we're going to explore Git and GitHub โ two powerful tools that will revolutionize how you manage your code and collaborate with others.
Don't worry if you've never used a command line before or if terms like "repository" sound foreign. By the end of this guide, you'll understand what Git and GitHub are, why they're essential for developers, and how to use them step by step.
What is Version Control?
Imagine you're writing a book. You start with Chapter 1, then add Chapter 2, make some edits to Chapter 1, add Chapter 3, and so on. Now imagine you want to:
See what your book looked like last week
Compare two different versions of Chapter 2
Work with a co-author without overwriting each other's changes
Keep a backup of your work that's accessible from anywhere
This is exactly what version control does for your code! It's like having a time machine and collaboration tool rolled into one.
What is Git?
Git is a distributed version control system created by Linus Torvalds (the same person who created Linux) in 2005. Think of Git as a super-smart filing system that:
Tracks every change you make to your files
Lets you create different versions (called "branches") of your project
Helps you merge changes from different contributors
Keeps a complete history of your project
Key Git Concepts
Let's break down the essential Git terminology:
Repository (Repo): A folder that contains your project files and all the version history. It's like a project folder with superpowers!
Commit: A snapshot of your project at a specific point in time. Each commit has a unique ID and a message describing what changed.
Branch: A separate line of development. The main branch is usually called "main" or "master."
Clone: Making a copy of a repository on your computer.
Push: Uploading your local changes to a remote repository.
Pull: Downloading changes from a remote repository to your local computer.
What is GitHub?
GitHub is a web-based platform that hosts Git repositories in the cloud. While Git is the tool that tracks changes, GitHub is the online service where you can:
Store your repositories online
Share your code with others
Collaborate on projects
Showcase your work to potential employers
Contribute to open-source projects
Think of GitHub as Google Drive for programmers, but with powerful collaboration features built specifically for code.
Getting Started: Installation and Setup
Step 1: Install Git
For Windows:
Go to git-scm.com
Download the installer
Run the installer with default settings
For Mac:
Open Terminal
Type:
git --version
If Git isn't installed, it will prompt you to install it
For Linux:
sudo apt-get update
sudo apt-get install git
Step 2: Configure Git
After installation, you need to tell Git who you are:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
Step 3: Create a GitHub Account
Go to github.com
Click "Sign up"
Choose a username (this will be part of your GitHub profile URL)
Enter your email and create a password
Verify your account
Your First Git Repository
Let's create your first project and track it with Git!
Step 1: Create a Project Folder
mkdir my-first-repo
cd my-first-repo
Step 2: Initialize Git
git init
This creates a hidden .git
folder that will track all your changes.
Step 3: Create Your First File
Create a simple file called README.md
:
# My First Project
Hello, Git and GitHub!
This is my first repository.
Step 4: Check Status
git status
You'll see that Git has detected your new file but isn't tracking it yet.
Step 5: Add Files to Staging
git add README.md
Or to add all files:
git add .
Step 6: Make Your First Commit
git commit -m "Add README file"
Congratulations! You've made your first commit.
Connecting to GitHub
Now let's put your repository on GitHub so others can see it and you can access it from anywhere.
Step 1: Create a GitHub Repository
Go to GitHub and click the "+" icon in the top right
Select "New repository"
Name it "my-first-repo"
Keep it public
Don't initialize with README (we already have one)
Click "Create repository"
Step 2: Connect Your Local Repository
GitHub will show you commands to run. They'll look like this:
git remote add origin https://github.com/yourusername/my-first-repo.git
git branch -M main
git push -u origin main
Step 3: Verify the Upload
Refresh your GitHub page, and you should see your README file!
Essential Git Commands
Here are the commands you'll use most often:
Checking Status and History
git status # See current status of files
git log # View commit history
git log --oneline # Compact view of commits
Making Changes
git add filename # Stage a specific file
git add . # Stage all changes
git commit -m "message" # Commit with message
Working with Remote Repositories
git push # Upload changes to GitHub
git pull # Download changes from GitHub
git clone <url> # Copy a repository to your computer
Branching
git branch # List all branches
git branch feature-name # Create new branch
git checkout feature-name # Switch to branch
git checkout -b feature-name # Create and switch to branch
git merge feature-name # Merge branch into current branch
Working with Branches
Branches let you work on different features without affecting your main code.
Creating a New Feature
git checkout -b new-feature
Make your changes, then:
git add .
git commit -m "Add new feature"
git push origin new-feature
Merging Changes
git checkout main
git merge new-feature
git push origin main
Collaboration Workflow
Here's how teams typically work with Git and GitHub:
The Fork and Pull Request Workflow
Fork the repository on GitHub
Clone your fork to your computer
Create a branch for your changes
Make your changes and commit them
Push your branch to your fork
Create a Pull Request on GitHub
The maintainer reviews and merges your changes
Basic Collaboration Commands
# Start working on someone else's project
git clone https://github.com/username/project.git
cd project
# Before starting work, get latest changes
git pull origin main
# Create your feature branch
git checkout -b my-contribution
# Make changes, add, and commit
git add .
git commit -m "Add my contribution"
# Push your branch
git push origin my-contribution
Best Practices for Beginners
Commit Messages
Write clear, descriptive commit messages:
# Good
git commit -m "Fix login button styling"
git commit -m "Add user authentication feature"
# Bad
git commit -m "fix"
git commit -m "changes"
Commit Frequently
Make small, frequent commits rather than large ones:
# Do this
git commit -m "Add header component"
git commit -m "Style header with CSS"
git commit -m "Make header responsive"
# Not this
git commit -m "Complete entire website"
Use .gitignore
Create a .gitignore
file to exclude files you don't want to track:
# .gitignore
node_modules/
*.log
.env
.DS_Store
Common Mistakes and How to Fix Them
Mistake 1: Committing Too Much
# If you accidentally added files
git reset HEAD filename
# If you committed but haven't pushed
git reset --soft HEAD~1
Mistake 2: Wrong Commit Message
# Change the last commit message
git commit --amend -m "New message"
Mistake 3: Working on Wrong Branch
# Save your work temporarily
git stash
# Switch to correct branch
git checkout correct-branch
# Apply your work
git stash pop
Practical Example: Building a Simple Website
Let's walk through a real example of using Git and GitHub to build a simple website.
Step 1: Set Up the Project
mkdir my-website
cd my-website
git init
Step 2: Create Basic Files
Create index.html
:
<!DOCTYPE html>
<html>
<head>
<title>My Website</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>Welcome to My Website</h1>
<p>This is my first website tracked with Git!</p>
</body>
</html>
Create style.css
:
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 20px;
background-color: #f4f4f4;
}
h1 {
color: #333;
text-align: center;
}
Step 3: Track Your Progress
git add .
git commit -m "Initial website structure"
Step 4: Add a Feature
Create a new branch for navigation:
git checkout -b add-navigation
Update index.html
:
<!DOCTYPE html>
<html>
<head>
<title>My Website</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<nav>
<ul>
<li><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</nav>
<h1>Welcome to My Website</h1>
<p>This is my first website tracked with Git!</p>
</body>
</html>
Step 5: Commit and Merge
git add .
git commit -m "Add navigation menu"
git checkout main
git merge add-navigation
Step 6: Push to GitHub
git remote add origin https://github.com/yourusername/my-website.git
git push -u origin main
Advanced Tips for Beginners
Viewing Changes
git diff # See unstaged changes
git diff --staged # See staged changes
git show # See last commit details
Undoing Changes
git checkout -- filename # Discard changes to a file
git reset HEAD filename # Unstage a file
git revert <commit-hash> # Undo a specific commit
Working with Remote Repositories
git remote -v # List remote repositories
git remote add upstream <url> # Add another remote
git fetch origin # Download changes without merging
GitHub Features for Beginners
Issues
Use GitHub Issues to track bugs and feature requests:
Go to your repository
Click "Issues" tab
Click "New issue"
Describe the problem or feature
Add labels and assign to team members
Pull Requests
Pull Requests let you propose changes:
Push your branch to GitHub
Click "Compare & pull request"
Add a description of your changes
Request reviews from team members
Merge when approved
GitHub Pages
Host your website for free:
Go to your repository settings
Scroll to "Pages"
Select source branch (usually main)
Your site will be available at
username.github.io/repository-name
Troubleshooting Common Issues
Problem: "Permission denied"
This usually means you need to set up SSH keys or use HTTPS authentication.
Solution:
git remote set-url origin https://github.com/username/repository.git
Problem: "Merge conflict"
This happens when Git can't automatically merge changes.
Solution:
Open the conflicted file
Look for conflict markers (
<<<<<<<
,=======
,>>>>>>>
)Choose which changes to keep
Remove the conflict markers
Add and commit the resolved file
Problem: "Nothing to commit"
This means all your changes are already committed.
Solution:
git status # Check what's happening
git push # Maybe you need to push to GitHub
What's Next?
Now that you understand the basics, here are some next steps:
Practice Daily: Use Git for all your projects, even small ones
Contribute to Open Source: Find beginner-friendly projects on GitHub
Learn Git GUIs: Try tools like GitHub Desktop or GitKraken
Explore Advanced Features: Learn about rebasing, cherry-picking, and hooks
Join Communities: Participate in coding communities and collaborate on projects
Conclusion
Congratulations! You've just learned the fundamentals of Git and GitHub. These tools might seem overwhelming at first, but with practice, they'll become second nature.
Remember these key points:
Git tracks changes to your files over time
GitHub hosts your repositories online
Commits are snapshots of your project
Branches let you work on features safely
Pull Requests facilitate collaboration
Start small, practice regularly, and don't be afraid to make mistakes. Every developer has accidentally deleted something or created a merge conflict. The beauty of Git is that you can almost always recover from these situations.
Your journey with version control has just begun, and it's going to make you a more organized, confident, and collaborative developer. Happy coding!
Let's Stay Connected!
Found this guide helpful? I'd love to connect with you and share more programming content!
๐ Main Links:
Portfolio: abdelhakim-baalla.vercel.app
LinkedIn: abdelhakimbaalla
Twitter: @Abdelhakim99891
๐ฑ More Platforms:
GitHub: Abdelhakim-Baalla
Medium: abdelhakimbaalla50
Instagram: abdelhakim.baalla
YouTube: Dinocrafting
๐ฌ Community:
Reddit: Abdelhakim-Baalla430
Stack Overflow: abdelhakim-baalla
Hashnode: abdelhakimbaalla
Substack: abdelhakimbaalla
Follow me for more beginner-friendly tutorials, coding tips, and tech insights. Let's learn and grow together in this amazing world of programming!
Subscribe to my newsletter
Read articles from Abdelhakim Baalla directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Abdelhakim Baalla
Abdelhakim Baalla
I'm a passionate Full-Stack Developer currently studying at YouCode, part of the prestigious UM6P (Mohammed VI Polytechnic University). With a strong foundation in both frontend and backend technologies, I love creating innovative web solutions that make a real impact. My journey in web development started with a curiosity about how websites work, and it has evolved into a passion for creating seamless user experiences and robust backend systems. I specialize in modern frameworks like Laravel, React, and Vue.js, always staying up-to-date with the latest industry trends. When I'm not coding, you can find me exploring new technologies, contributing to open-source projects, or sharing knowledge with the developer community. I believe in continuous learning and always strive to improve my skills