Fundamentals 18 min read

Master Git: Essential Commands and Workflows for Every Developer

This comprehensive guide walks developers through Git fundamentals—including branches, commits, tags, staging, remote repositories, conflict resolution, popular workflows, and advanced commands—while providing practical code snippets and a handy cheat‑sheet for everyday version‑control tasks.

21CTO
21CTO
21CTO
Master Git: Essential Commands and Workflows for Every Developer

Git is a distributed version control system that lets developers store, modify, and collaborate on code. Mastering its core concepts and commands is a vital investment for any programmer.

Basic Concepts

Branches

Repositories contain a main line (often called main or master) and multiple branches that enable parallel development of features or fixes.

Commits

A commit captures a snapshot of the project at a specific point, recording changes since the previous commit. Each commit is identified by a unique hash. git show abc123def456789 The hash can be used to reference a specific commit.

Tags

Tags mark important milestones such as releases or versions, acting as landmarks in Git history.

HEAD

HEAD points to the latest commit on the current branch, or directly to a commit in a detached state.

Staging Area

The staging area ( git add) holds changes ready to be committed.

Useful command: git add (or git rm to unstage).

Local Repository

The local repository stores all committed changes, allowing history inspection, rollback, and collaboration.

Commit staged changes with git commit .

Remote Repository

Remotes (e.g., GitHub, GitLab, Bitbucket) host a central copy for sharing and collaboration.

Push and pull changes using git push and git pull .

Getting Started

Initialize a workspace by cloning an existing repository or creating a new one with git init.

Credential Configuration

git config --global credential.helper store

This stores credentials so you aren’t prompted for username/password on each push/pull.

git config --global credential.helper

Branch Collaboration

View current branches with git branch and create new ones with git branch <name>. Switch branches using git switch or git checkout. git status Use git status to see the repository’s current state.

Making Commits

# Add a message to each commit</code>
<code>git commit -m "meaningful message"

Amend the most recent commit with git commit --amend when needed, but use --force cautiously.

⚠️ Force‑pushing can overwrite history; avoid it on main branches.

History Manipulation

Rebase vs. Merge

Rebase rewrites history for a linear view, while merge preserves branch history via a merge commit.

git checkout your_branch</code>
<code>git fetch
git rebase upstream_branch
git push origin your_branch --force
⚠️ Use --force carefully.

Squash

# Squash recent commits</code>
<code>git reset --soft HEAD~X</code>
<code>git commit -m "Your squashed commit message"</code>
<code>git push origin your_branch --force
⚠️ Use --force carefully.

Cherry‑pick

Select specific commits from one branch to apply onto another.

git checkout target_branch</code>
<code>git cherry-pick <commit-hash></code>
<code>git push origin target_branch

Advanced Commands

Signed Commits

Sign commits with GPG to verify authenticity.

# Generate a GPG key</code>
<code>gpg --gen-key</code>
<code># Configure Git to use the key</code>
<code>git config --global user.signingkey <your-gpg-key-id></code>
<code># Sign a commit</code>
<code>git commit -S -m "Your commit message"</code>
<code># View signed commits</code>
<code>git log --show-signature

Reflog

Use git reflog to navigate reference logs, recover lost commits, and debug.

Interactive Rebase

Rewrite history interactively, reordering, editing, squashing, or dropping commits.

git rebase --interactive HEAD~3

Collaboration

Origin and Upstream

origin

is the default remote when cloning; upstream refers to the original repository of a fork.

# Pull changes (merge)</code>
<code>git pull <remote_name> <branch_name></code>
<code># Fetch without merging</code>
<code>git fetch <remote_name>
git remote -v

Resolving Conflicts

When merges or rebases produce conflicts, Git inserts conflict markers ( <<<<<<<, =======, >>>>>>>). Edit the file to keep desired changes, then remove the markers and commit.

Popular Workflows

Feature Branch Workflow

Develop each feature or bug fix on its own branch, then merge back to the main branch.

Gitflow

Uses dedicated branches for features, releases, hotfixes, and development.

Fork Workflow

Contributors fork the repository, push changes to their fork, and open pull requests for review.

Pull‑Request Workflow

Similar to fork workflow but works directly on the main repository’s branches.

Trunk‑Based Development

Developers commit small, frequent changes directly to the main branch, relying on strong CI/CD pipelines.

Cheat Sheet

# Clone a Repository</code>
<code>git clone <repository_url></code>
<code># Stage Changes</code>
<code>git add <file(s)></code>
<code># Commit Changes</code>
<code>git commit -m "Commit message"</code>
<code># Push Changes</code>
<code>git push</code>
<code># Force Push (caution)</code>
<code>git push --force</code>
<code># Reset Working Directory</code>
<code>git reset --hard</code>
<code># Create a New Branch</code>
<code>git branch <branch_name></code>
<code># Switch Branch</code>
<code>git checkout <branch_name></code>
<code># Merge Branch</code>
<code>git merge <branch_name></code>
<code># Rebase Branch (caution)</code>
<code>git rebase <base_branch></code>
<code># View Status</code>
<code>git status</code>
<code># View Log</code>
<code>git log</code>
<code># Undo Last Commit (caution)</code>
<code>git reset --soft HEAD^</code>
<code># Discard Changes</code>
<code>git restore <file(s)></code>
<code># Retrieve Lost Commits</code>
<code>git reflog</code>
<code># Interactive Rebase</code>
<code>git rebase --interactive HEAD~3</code>
<code># Pull Changes</code>
<code>git pull <remote_name> <branch_name></code>
<code># Fetch Changes</code>
<code>git fetch <remote_name>
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.

workflowGitcommand-lineVersion Controlbranchingcommit
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.