DEV Community

Cover image for Git: 50 Essential Commands for Everyday Workflow
Ahmed Niazy
Ahmed Niazy

Posted on

Git: 50 Essential Commands for Everyday Workflow

Git is a distributed version control system (DVCS) created by Linus Torvalds in 2005 to manage the Linux kernel’s source code. Unlike centralized systems, Git keeps a complete history of your project on every developer’s machine, making it easy to revert, branch, and merge changes no matter your workflow.

Below is a reorganized, step-by-step guide to the 50 Git commands you’ll use most often, grouped by category. You’ll find concise explanations, usage examples, and tips so you can copy-and-paste as you learn.


📋 1. Configuration

Before you start, tell Git who you are:

# View all settings (name, email, cache, editor, etc.)
git config -l

# Set your name (appears in commits)
git config --global user.name "Your Name"

# Set your email (appears in commits)
git config --global user.email "you@example.com"

# Cache HTTPS credentials (default: 15 minutes)
git config --global credential.helper cache

# Change the cache timeout (in seconds), e.g., 1 hour:
git config --global credential.helper 'cache --timeout=3600'
Enter fullscreen mode Exit fullscreen mode

🌱 2. Creating a Repository

Initialize a new project:

# In your project folder, start tracking with Git
git init
Enter fullscreen mode Exit fullscreen mode

➕ 3. Staging Changes

Prepare your work for committing:

# Add ONE file
git add filename.txt

# Add ALL files (new, modified, deleted)
git add .

# Add only files matching a pattern, e.g., all “app-” files
git add app-*

# Interactive staging: choose hunks to stage
git add -p
Enter fullscreen mode Exit fullscreen mode

✔️ 4. Checking Status & Differences

Inspect what you’ve modified:

# Show staged vs. unstaged vs. untracked
git status

# Show unstaged changes in working directory
git diff

# Show staged changes ready to commit
git diff --staged

# Show changes for a specific file
git diff path/to/file.py
Enter fullscreen mode Exit fullscreen mode

💾 5. Committing

Record your changes in project history:

# Open your editor to write a multi-line message
git commit

# One-line commit message
git commit -m "Short summary of changes"

# Stage AND commit modified files in one go
git commit -a -m "Fix typo in README"
Enter fullscreen mode Exit fullscreen mode

📜 Viewing Commit History

# Simple log
git log

# Log with patch (diffs)
git log -p

# Log with stats (lines and file names changed)
git log --stat

# One-line, ASCII graph of commits
git log --graph --oneline
Enter fullscreen mode Exit fullscreen mode

🔍 Inspecting a Single Commit

# Show full details of a specific commit
git show <commit-hash>
Enter fullscreen mode Exit fullscreen mode

🔄 6. Undoing & Amending

# Revert unstaged changes in working directory
git checkout -- filename.txt

# Unstage a file (keep working-dir changes)
git reset HEAD filename.txt

# Unstage interactively
git reset -p

# Amend last commit (modify message or include new changes)
git commit --amend

# Create a “reverting” commit that undoes a specific commit
git revert <commit-hash>

# Roll back latest commit by reverting HEAD
git revert HEAD
Enter fullscreen mode Exit fullscreen mode

⚠️ Caution: Avoid --amend on commits you’ve already pushed, as rewriting history can confuse collaborators.


🌿 7. Branching & Merging

# List all local branches
git branch

# Create a new branch
git branch feature/login

# Switch to another branch
git checkout feature/login

# Create + switch in one command
git checkout -b feature/signup

# Delete a local branch (after merging)
git branch -d old-branch

# Merge another branch into your current one
git merge feature/login

# Abort a conflicted merge
git merge --abort
Enter fullscreen mode Exit fullscreen mode

🔗 8. Working with Remotes

Link your local repo to a shared server (GitHub, GitLab, Bitbucket):

# Add a remote named “origin”
git remote add origin https://github.com/you/repo.git

# List remote URLs
git remote -v

# Show detailed info about a remote
git remote show origin

# Download from remote without merging
git fetch

# Download + merge (shorthand)
git pull

# Upload commits to remote
git push

# Push a new branch and set upstream
git push -u origin feature/login

# Delete a remote branch
git push --delete origin old-branch
Enter fullscreen mode Exit fullscreen mode

🔄 9. Rebasing (Advanced)

Rebase lets you “replay” commits from one branch onto another:

# Non-interactive rebase onto master
git rebase master

# Interactive rebase (reorder, squash, edit)
git rebase -i master
Enter fullscreen mode Exit fullscreen mode

Tip: Rebasing gives you a cleaner, linear history—but avoid rebasing public branches.


🎯 10. Miscellaneous Tips

# View remote-tracking branches
git branch -r

# Show log of remote main branch
git log origin/main

# Update all remotes without merging
git remote update

# Force-push (careful: overwrites remote!)
git push -f
Enter fullscreen mode Exit fullscreen mode

🚀 Conclusion

With these 50 commands, you have a solid foundation to:

  • Configure Git for your identity
  • Stage and commit changes efficiently
  • Branch, merge, and even rebase safely
  • Collaborate using remotes and pull/push workflows

Bookmark this list, try them in a test repo, and soon they’ll become second nature. Happy coding!

Top comments (4)

Collapse
 
nevodavid profile image
Nevo David •

Pretty cool, having all the main commands in one spot honestly makes life easier for me.

Collapse
 
sejutaimpian profile image
Eris Sulistina •

Nice Post!

Collapse
 
muhammedhossam profile image
Muhammed Hossam •

Useful ❤️

Collapse
 
dotallio profile image
Dotallio •

Super helpful breakdown! Cheat sheets like this save me from making silly mistakes, do you have any tricks for dealing with tricky merge conflicts?