Fundamentals 11 min read

Why Git Dominates Version Control: History, Features & Essential Commands

This article explains Git's evolution from a distributed version control system to the industry standard, outlines its key advantages and drawbacks, and provides a comprehensive list of essential commands for branching, stashing, resetting, tagging, and repository management.

21CTO
21CTO
21CTO
Why Git Dominates Version Control: History, Features & Essential Commands

Git is a distributed version control system that tracks code revisions, enables team collaboration, and supports code merging.

Early version control tools were centralized, requiring exclusive checkout of files, which caused conflicts and limited offline work. BitKeeper, a commercial distributed system, was adopted by the Linux kernel team in 2002, but concerns about its proprietary nature led developers to seek an open alternative.

In 2005, Linus Torvalds created Git using C, Shell, Perl, and Python, aiming for speed, simplicity, and to avoid the shortcomings of CVS.

Git’s advantages include high performance through object‑based storage, strong integrity protection via cryptographic hashing, flexible branching and tagging, and a thriving open‑source ecosystem.

Its drawbacks are a steep learning curve, many commands to master, slower handling of large binary files, and occasional merge conflicts that require manual resolution.

Branch Operations

git branch

– create a branch git branch -b – create and switch to a new branch git checkout – switch branches git branch – list branches git branch -v – show last commit of each branch git branch -vv – show current branch details git branch -b <branch> origin/<branch> – create a local tracking branch git branch --merged – list branches merged into current git branch --no-merged – list branches not merged git branch -d <branch> – delete a local branch git branch -D <branch> – force‑delete a branch git push origin :<branch> – delete a remote branch git merge <branch> – merge a branch into the current one

Stash Operations

git stash

– stash current changes git stash apply – apply the most recent stash git stash pop – apply and drop the most recent stash git stash list – list all stashes git stash drop <stash@{n}> – remove a specific stash git stash clear – remove all stashes

Reset Operations

git reset --hard HEAD^

– revert to previous commit git reset --hard <commit_id> – revert to a specific commit git checkout -- <file> – discard changes in a file git reset HEAD <file> – unstage a file

Tag Operations

git tag <name>

– create a lightweight tag on HEAD git tag <name> <commit_id> – tag a specific commit git tag -a <name> -m "msg" – create an annotated tag git tag – list all tags git show <tag> – display tag details git tag -d <name> – delete a local tag git push origin <tag> – push a tag to remote git push origin --tags – push all tags git push origin :refs/tags/<name> – delete a remote tag

General Operations

git push origin <branch>

– push a local branch git rm -r --cached <path> – stop tracking a file or directory git reflog – view command history git log --graph – visualize branch merges git merge --no-ff -m "msg" <branch> – merge with a merge commit git check-ignore -v <file> – see ignore rules git add -f <file> – force‑add a file

Creating a Repository

git init

– initialize a repository git remote add origin <url> – link to a remote git pull – fetch and merge git fetch – fetch all remote branches

Ignoring Files

git update-index --assume-unchanged <file>

– ignore a single file git rm -r --cached <path> – stop tracking and ignore a path

Unignoring Files

git update-index --no-assume-unchanged <file>

Password‑less Push/Pull

git config --global credential.helper store
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

software developmentGitcommand-lineVersion Controlbranching
21CTO
Written by

21CTO

21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.