v1.0.0

Git Essentials

Arnarsson Arnarsson ← All skills

Essential Git commands and workflows for version control, branching, and collaboration.

Downloads
5.7k
Stars
1
Versions
1
Updated
2026-02-23

Install

npx clawhub@latest install git-essentials

Documentation

Git Essentials

Essential Git commands for version control and collaboration.

Initial Setup

Configure user

git config --global user.name "Your Name"

git config --global user.email "your@email.com"

Initialize repository

git init

Clone repository

git clone https://github.com/user/repo.git

git clone https://github.com/user/repo.git custom-name

Basic Workflow

Staging and committing

Check status

git status

Add files to staging

git add file.txt

git add .

git add -A # All changes including deletions

Commit changes

git commit -m "Commit message"

Add and commit in one step

git commit -am "Message"

Amend last commit

git commit --amend -m "New message"

git commit --amend --no-edit # Keep message

Viewing changes

Show unstaged changes

git diff

Show staged changes

git diff --staged

Show changes in specific file

git diff file.txt

Show changes between commits

git diff commit1 commit2

Branching & Merging

Branch management

List branches

git branch

git branch -a # Include remote branches

Create branch

git branch feature-name

Switch branch

git checkout feature-name

git switch feature-name # Modern alternative

Create and switch

git checkout -b feature-name

git switch -c feature-name

Delete branch

git branch -d branch-name

git branch -D branch-name # Force delete

Rename branch

git branch -m old-name new-name

Merging

Merge branch into current

git merge feature-name

Merge with no fast-forward

git merge --no-ff feature-name

Abort merge

git merge --abort

Show merge conflicts

git diff --name-only --diff-filter=U

Remote Operations

Managing remotes

List remotes

git remote -v

Add remote

git remote add origin https://github.com/user/repo.git

Change remote URL

git remote set-url origin https://github.com/user/new-repo.git

Remove remote

git remote remove origin

Syncing with remote

Fetch from remote

git fetch origin

Pull changes (fetch + merge)

git pull

Pull with rebase

git pull --rebase

Push changes

git push

Push new branch

git push -u origin branch-name

Force push (careful!)

git push --force-with-lease

History & Logs

Viewing history

Show commit history

git log

One line per commit

git log --oneline

With graph

git log --graph --oneline --all

Last N commits

git log -5

Commits by author

git log --author="Name"

Commits in date range

git log --since="2 weeks ago"

git log --until="2024-01-01"

File history

git log -- file.txt

Searching history

Search commit messages

git log --grep="bug fix"

Search code changes

git log -S "function_name"

Show who changed each line

git blame file.txt

Find commit that introduced bug

git bisect start

git bisect bad

git bisect good commit-hash

Undoing Changes

Working directory

Discard changes in file

git restore file.txt

git checkout -- file.txt # Old way

Discard all changes

git restore .

Staging area

Unstage file

git restore --staged file.txt

git reset HEAD file.txt # Old way

Unstage all

git reset

Commits

Undo last commit (keep changes)

git reset --soft HEAD~1

Undo last commit (discard changes)

git reset --hard HEAD~1

Revert commit (create new commit)

git revert commit-hash

Reset to specific commit

git reset --hard commit-hash

Stashing

Stash changes

git stash

Stash with message

git stash save "Work in progress"

List stashes

git stash list

Apply latest stash

git stash apply

Apply and remove stash

git stash pop

Apply specific stash

git stash apply stash@{2}

Delete stash

git stash drop stash@{0}

Clear all stashes

git stash clear

Rebasing

Rebase current branch

git rebase main

Interactive rebase (last 3 commits)

git rebase -i HEAD~3

Continue after resolving conflicts

git rebase --continue

Skip current commit

git rebase --skip

Abort rebase

git rebase --abort

Tags

List tags

git tag

Create lightweight tag

git tag v1.0.0

Create annotated tag

git tag -a v1.0.0 -m "Version 1.0.0"

Tag specific commit

git tag v1.0.0 commit-hash

Push tag

git push origin v1.0.0

Push all tags

git push --tags

Delete tag

git tag -d v1.0.0

git push origin --delete v1.0.0

Advanced Operations

Cherry-pick

Apply specific commit

git cherry-pick commit-hash

Cherry-pick without committing

git cherry-pick -n commit-hash

Submodules

Add submodule

git submodule add https://github.com/user/repo.git path/

Initialize submodules

git submodule init

Update submodules

git submodule update

Clone with submodules

git clone --recursive https://github.com/user/repo.git

Clean

Preview files to be deleted

git clean -n

Delete untracked files

git clean -f

Delete untracked files and directories

git clean -fd

Include ignored files

git clean -fdx

Common Workflows

Feature branch workflow:
git checkout -b feature/new-feature

Make changes

git add .

git commit -m "Add new feature"

git push -u origin feature/new-feature

Create PR, then after merge:

git checkout main

git pull

git branch -d feature/new-feature

Hotfix workflow:
git checkout main

git pull

git checkout -b hotfix/critical-bug

Fix bug

git commit -am "Fix critical bug"

git push -u origin hotfix/critical-bug

After merge:

git checkout main && git pull

Syncing fork:
git remote add upstream https://github.com/original/repo.git

git fetch upstream

git checkout main

git merge upstream/main

git push origin main

Useful Aliases

Add to ~/.gitconfig:

[alias]

st = status

co = checkout

br = branch

ci = commit

unstage = reset HEAD --

last = log -1 HEAD

visual = log --graph --oneline --all

amend = commit --amend --no-edit

Tips

  • -Commit often, perfect later (interactive rebase)
  • -Write meaningful commit messages
  • -Use .gitignore for files to exclude
  • -Never force push to shared branches
  • -Pull before starting work
  • -Use feature branches, not main
  • -Rebase feature branches before merging
  • -Use --force-with-lease instead of --force

Common Issues

Undo accidental commit:
git reset --soft HEAD~1
Recover deleted branch:
git reflog

git checkout -b branch-name <commit-hash>

Fix wrong commit message:
git commit --amend -m "Correct message"
Resolve merge conflicts:

Edit files to resolve conflicts

git add resolved-files

git commit # Or git merge --continue

Documentation

Official docs: https://git-scm.com/doc

Pro Git book: https://git-scm.com/book

Visual Git guide: https://marklodato.github.io/visual-git-guide/

Launch an agent with Git Essentials on Termo.