Whether you're new to Git or need a quick refresher, this post will walk you through the most commonly used Git commands with practical examples. Each command is paired with input/output and real-world context so you can learn by doing. Let’s dive in!
1. git init – Start a New Git Repository
Use Case:
You're creating a new project and want to start tracking it with Git.
Input:
mkdir my-app && cd my-app
git initOutput:
Initialized empty Git repository in /home/user/my-app/.git/Explanation:
This creates a .git directory that tracks your project. It's now a local Git repo.
2. git clone – Copy an Existing Repository
Use Case:
You want to contribute to an existing project or start working locally on one from GitHub.
Input:
git clone https://github.com/octocat/Hello-World.gitOutput:
Cloning into 'Hello-World'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.Explanation:
Creates a new directory (Hello-World/) and downloads all files and history from the repo.
3. git status – Check Your Work
Use Case:
You want to see what’s changed, what’s staged, and what’s untracked.
Input:
git statusOutput:
On branch main
Untracked files:
(use "git add ..." to include in what will be committed)
index.htmlExplanation:
Shows what files are untracked (not staged) or modified. Helpful before committing.
4. git add – Stage Changes
Use Case:
You're ready to tell Git which files to include in the next commit.
Input:
git add index.htmlOutput:
(no output on success)Explanation:
Stages the file so it will be included in the next commit. Use . to stage all files:
git add .
5. git commit – Save a Snapshot
Use Case:
You're done with a chunk of work and want to checkpoint your progress.
Input:
git commit -m "Add landing page"Output:
[main 3e1f51a] Add landing page
1 file changed, 12 insertions(+)Explanation:
Commits all staged files to your local repo with a message.
6. git push – Upload Changes to Remote
Use Case:
You want to push your local commits to GitHub (or another remote).
Input:
git push origin mainOutput:
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
To https://github.com/user/my-app.git
abc1234..def5678 main -> mainExplanation:
Sends your local commits to the remote repository. Often used after commit.
7. git pull – Get Latest Changes
Use Case:
Other team members made changes and you want to fetch + merge them into your local copy.
Input:
git pull origin mainOutput:
Updating abc1234..def5678
Fast-forward
style.css | 4 ++++Explanation:
Downloads and merges new changes from the remote branch.
8. git branch – Manage Branches
View all branches:
git branchCreate a new branch:
git branch feature/loginSwitch to a branch:
git checkout feature/loginOutput:
Switched to branch 'feature/login'Explanation:
Branches help isolate features or fixes. Always create a branch for new work!
9. git merge – Combine Branches
Use Case:
You're done working in a feature branch and want to merge it into main.
Input:
git checkout main
git merge feature/loginOutput:
Updating abc1234..def5678
Fast-forward
login.js | 20 ++++++++++++++++++++Explanation:
Combines the changes from the feature branch into your main branch.
10. git log – View Commit History
Input:
git log --onelineOutput:
def5678 Add login functionality
abc1234 Add landing page
3e1f51a Initial commitExplanation:
Shows a compact history of commits. Super helpful for understanding progress or debugging.
Bonus: Undoing Mistakes
Unstage a file:
git restore --staged file.txtDiscard changes:
git restore file.txtReset last commit (keep changes):
git reset --soft HEAD~1Summary Table
| Command | Description |
|---|---|
git init |
Start a new repo |
git clone |
Copy an existing repo |
git status |
Check file changes |
git add |
Stage files for commit |
git commit |
Record staged changes |
git push |
Upload commits to remote |
git pull |
Get latest changes from remote |
git branch |
Create/list branches |
git checkout |
Switch branches |
git merge |
Combine branches |
git log |
View commit history |
Final Thoughts
These commands form the backbone of your daily Git workflow. Whether you're building a side project, collaborating on a team, or contributing to open source, mastering these basics will keep your code safe, trackable, and team-friendly.