DEV Community

Cover image for Best Git Commands for Every Developer: Master Your Version Control
Blessy B Sherin
Blessy B Sherin

Posted on

Best Git Commands for Every Developer: Master Your Version Control

Git is a powerful version control system that helps developers manage changes to their codebase efficiently. Whether you're a beginner or a seasoned developer, understanding the best Git commands can significantly boost your productivity and collaboration skills. This blog will cover essential commands every developer should know, along with tips, examples, and interactive challenges to help you master them.

Introduction: Why Learn Git Commands?

Git is more than just a tool for tracking changes. It enables collaboration, keeps your code history safe, and provides flexibility for experimenting with new features without affecting the main codebase. Mastering Git commands can save you time, prevent mistakes, and make your workflow more efficient.

Start a New Repository -

git init

Usage: git init
Purpose: Initializes a new Git repository in the current directory.
Example: Run git init in a folder to start tracking changes in that folder.

Copy a Remote Repository -

git clone

Usage: git clone <repository-url>
Purpose: Creates a copy of an existing remote repository on your local machine.
Example: git clone https://github.com/user/repo.git downloads the repository to your computer.

Stage Changes -

git add

Usage: git add .
Purpose: Stages changes in your working directory for the next commit.
Example: Use git add <file-name> to stage specific files, or git add . to stage all changes.

Save Changes -

git commit

Usage: git commit -m "Commit message"
Purpose: Records staged changes with a descriptive message.
Example: git commit -m "Fixed bug in user login" saves changes with a description.

Sync with Remote Repository -

git pull

Usage: git pull origin main
Purpose: Fetches and merges changes from a remote repository to your local branch.
Example: Use git pull to update your local repository with the latest changes from the remote.

Share Local Changes -

git push

Usage: git push origin main
Purpose: Uploads your local commits to a remote repository.
Example: git push origin main sends your changes to the remote branch named "main."

Manage Branches -

git branch

Usage:
List branches: git branch
Create branch: git branch <branch-name>
Delete branch: git branch -d <branch-name>
Purpose: Manages branches in your repository.
Example: Use git branch feature-xyz to create a new branch called "feature-xyz."

Switch Branches -

git checkout

Usage: git checkout <branch-name>
Purpose: Switches to a specified branch or commit.
Example: git checkout develop switches to the "develop" branch.

Combine Changes from Branches -

git merge

Usage: git merge <branch-name>
Purpose: Merges changes from one branch into another.
Example: Use git merge feature-xyz to merge the "feature-xyz" branch into your current branch.

Check Current Changes -

git status

Usage: git status
Purpose: Shows the state of your working directory and staging area.
Example: Run git status to see which files have changes and their status (staged, unstaged, or untracked).

View Commit History -

git log

Usage: git log
Purpose: Displays the commit history, showing each commit with details like the author, date, and message.
Example: git log --oneline gives a compact view of the commit history.

Compare Changes -

git diff

Usage: git diff
Purpose: Shows the differences between commits, branches, or files.
Example: Use git diff to see what has changed in your working directory compared to the last commit.

Temporarily Save Changes -

git stash

Usage: git stash
Purpose: Temporarily saves uncommitted changes for later use.
Example: Run git stash to clear your working directory without losing changes.

Undo Changes -

git reset

Usage:
Soft reset: git reset --soft <commit>
Hard reset: git reset --hard <commit>
Purpose: Moves the current branch pointer to a specified commit and optionally changes the index and working directory.
Example: Use git reset --hard HEAD~1 to undo the last commit and all changes.

Reapply Commits on Top of Another Base -

git rebase

Usage: git rebase <branch-name>
Purpose: Reapplies commits on top of another base, which can clean up the commit history.
Example: git rebase main moves your current branch’s changes to be based on the latest commit in "main."

Manage Remote Repositories -

git remote

Usage:
List remotes: git remote -v
Add remote: git remote add <name> <url>
Purpose: Manages connections to remote repositories.
Example: git remote add origin https://github.com/user/repo.git links your local repo to a remote.

Download Changes -

git fetch

Usage: git fetch
Purpose: Retrieves changes from a remote repository without merging them.
Example: Use git fetch to see what changes are available before merging them into your branch.

Apply Specific Commits -

git cherry-pick

Usage: git cherry-pick <commit-hash>
Purpose: Applies changes from a specific commit to the current branch.
Example: Use git cherry-pick abc123 to apply commit "abc123" to your current branch.

Create Tags -

git tag

Usage: git tag <tag-name>
Purpose: Creates a named reference to a specific commit.
Example: git tag v1.0 creates a tag named "v1.0" on the current commit.

Remove Untracked Files -

git clean

Usage: git clean -f
Purpose: Deletes untracked files from the working directory.
Example: Use git clean -f to remove files that are not under version control.

Create an Archive of Files -

git archive
Usage: git archive --output=<file.zip> <branch-name>
Purpose: Creates a zip or tar archive of the files in the specified branch.
Example: git archive --output=repo.zip main creates a ZIP file of the main branch.

Track Changes Line by Line -

git blame

Usage: git blame <file-name>
Purpose: Shows who last modified each line of a file.
Example: git blame README.md displays who made changes to each line in the README file.

Summarize Commit History -

git shortlog

Usage: git shortlog
Purpose: Summarizes the commit history, grouping commits by author.
Example: Use git shortlog -s to see the number of commits by each contributor.

Display Commit Details -

git show

Usage: git show <commit-hash>
Purpose: Shows information about a specific commit.
Example: git show abc123 displays details of commit "abc123."

Find a Bug -

git bisect

Usage: git bisect start
Purpose: Uses binary search to find a commit that introduced a bug.
Example: Use git bisect to automate the process of finding the bad commit.

Recover Lost Commits -

git reflog

Usage: git reflog
Purpose: Lists recent actions in the repository to help recover lost commits.
Example: Use git reflog to find a reference to a commit that was accidentally lost.

Configure Git -

git config

Usage: git config --global user.name "Your Name"
Purpose: Sets user-specific configuration settings.
Example: git config --global user.email "your-email@example.com" sets your email.

Optimize the Repository -

git gc

Usage: git gc
Purpose: Cleans up unnecessary files and optimizes the local repository.
Example: Run git gc periodically to keep your repository clean and fast.

Manage Submodules -

git submodule

Usage:
Add submodule: git submodule add <repository-url>
Update submodules: git submodule update
Purpose: Manages submodules, which are external repositories within a parent repository.
Example: Use git submodule add https://github.com/user/repo.git to add a submodule.

Rename or Move Files -

git mv

Usage: git mv <old-name> <new-name>
Purpose: Renames or moves files and updates the repository.
Example: Use git mv old-file.txt new-file.txt to rename a file without changing any of the contents.

Conclusion: Practice Makes Perfect

Mastering these Git commands will make you a more effective developer. Start by integrating these commands into your daily workflow, and soon they’ll become second nature. Remember, practice is key!

What’s your favorite Git command? Let me know in the comments!

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.