DEV Community

Cover image for Advanced Git Mastery – Second edition 2025
Laravel Daily tips
Laravel Daily tips

Posted on

Advanced Git Mastery – Second edition 2025

Git helps you work smarter and safer. With git reflog, you can recover lost commits, and tools like git clean and git gc help you remove extra files and speed up your project. Git aliases let you create shortcuts for commands, saving you time every day. Exploring the .git folder gives you insight into how Git manages your project internally.

For team projects, choosing the right Git workflow is key. Git Flow, GitHub Flow, and Trunk-Based Development each support different types of teams and release styles. Writing clear commit messages, squashing fixes, and using pull requests are all best practices that keep your code clean and easy to review.

1. Recovering with Reflog (git reflog)

What is git reflog?

It tracks every move of your HEAD, even those Git doesn't normally show.
If you accidentally delete a commit, reset a branch, or mess something up, reflog can save your day.

Real-World Example: Time Machine for Your Code

Imagine you’re writing a book. Every time you print a copy (commit), you store it.

One day, you get confused and:

  • Rip out a few pages
  • Or throw away the last version
  • Or accidentally go back to an older version

You think: “Oh no! I lost my best work!”

That’s where git reflog comes in!

git reflog
Enter fullscreen mode Exit fullscreen mode

It shows a history like:

a1b2c3d HEAD@{0}: reset: moving to previous version
f4e5f6g HEAD@{1}: commit: Add contact form
c7d8e9h HEAD@{2}: commit: Fix login issue
Enter fullscreen mode Exit fullscreen mode

Each line = a step you took (checkout, commit, reset, merge, etc.)

How to Recover

1. See the history:

git reflog
Enter fullscreen mode Exit fullscreen mode

2. Choose the commit you want to go back to (copy the hash)

3. Restore it:

  • Just look at the old state:
git checkout <commit-id>
Enter fullscreen mode Exit fullscreen mode
  • Or move your branch back completely:
git reset --hard <commit-id>
Enter fullscreen mode Exit fullscreen mode

Be careful: --hard will overwrite current working files.

When to Use git reflog

  • You did git reset --hard and lost work
  • You force-pushed or deleted a branch accidentally
  • You want to go back to any previous state, even if it’s not in git log

Sooooo, Now you better understand the magic of GIT and reflog 😉

10. Cleaning Up with git clean, git gc

1. git clean – Remove Untracked Junk

When you're working on a project, sometimes you create extra files or folders that aren’t tracked by Git, like:

  • Temporary files (.log, .tmp, etc.)
  • Build output (e.g., dist/, node_modules/, etc.)
  • Mistakenly added files

These don’t show up in git status as staged or committed, but they clutter your folder.

Real-World Analogy:

Imagine your desk has:

  • Files you've already filed in drawers (committed files)
  • Files you’ve decided to file next (staged files)
  • Sticky notes, wrappers, and paper scraps all over (untracked files)

You use git clean to throw away those scraps.

Commands:

git clean -f     # Clean untracked files only
git clean -fd    # Clean untracked files AND folders
Enter fullscreen mode Exit fullscreen mode

Be careful – this deletes files permanently.

To preview before deleting, use:

git clean -n
Enter fullscreen mode Exit fullscreen mode

2. git gc – Optimize Your Repository

Over time, Git stores:

  • Deleted commits
  • Unreachable branches
  • Old pack files

These pile up and make your repo heavier.

Think of It Like:

Defragmenting your hard drive or cleaning up cache, it keeps things fast and tidy.

Command:

git gc
Enter fullscreen mode Exit fullscreen mode

This stands for Garbage Collection.

It will:

  • Compress files
  • Remove unnecessary objects
  • Optimize Git's internal storage

11. Git Aliases to Boost Productivity

Speed up typing with aliases.

Example:

git config --global alias.st status
git config --global alias.co checkout
Enter fullscreen mode Exit fullscreen mode

Now use:

git st
git co main
Enter fullscreen mode Exit fullscreen mode

Save hours over time!

11. Exploring the .git Folder – The Brain of Your Git Repo

What is .git?

When you run git init, Git creates a hidden folder called .git inside your project.

This folder is like the brain and memory of your Git project.
It contains everything Git needs to track changes, branches, commits, and settings.

Real-World Analogy:

Think of your Git project like a house, and the .git folder is the control room in the basement.

  • You don’t see it during daily use
  • But it runs everything behind the scenes
  • If you delete it, you lose all history 

Let’s Explore It

Run:

ls .git
Enter fullscreen mode Exit fullscreen mode

You’ll see something like this:

HEAD
config
objects/
refs/
logs/
index
Enter fullscreen mode Exit fullscreen mode

Important Parts Explained:

Folder/File What It Does
objects/ Stores all Git data (commits, files, trees)
refs/ Contains branches and tags
HEAD Points to your current branch
config Local Git settings for this repo
logs/ Stores reflog history – all HEAD movements
index The staging area snapshot

Tip:

Do NOT edit files in .git manually, unless:

  • You really know what you're doing
  • You're debugging or recovering a repo

One wrong change can corrupt your Git repo.

14. Best Practices for Teams

Writing Good Commit Messages

  • Start with a capital letter
  • Keep the first line under 50 characters
  • Describe what and why
git commit -m "Fix login redirect on mobile"
Enter fullscreen mode Exit fullscreen mode

Reviewing and Squashing Commits

Use Pull Requests to review code. Use:

git rebase -i
Enter fullscreen mode Exit fullscreen mode

to squash “fix” commits before merging.

Handling Large Files

Git isn't built for binary files or large assets. Use:

git lfs install
git lfs track "*.psd"
Enter fullscreen mode Exit fullscreen mode

Git LFS (Large File Storage) stores them efficiently outside your repo.

Final Thoughts

Git is more than just version control, it's a toolbox for collaboration, automation, and code safety. Mastering these advanced tools can drastically improve your efficiency, team collaboration, and confidence during critical development tasks.

Next Step:
Missed the basics? Git for Beginners
Or continue from intermediate level: Git Intermediate Guide
Or continue from advanced level Part 1:  Git Advanced Guide Part 1
Or continue from advanced level Part 2:  Git Advanced Guide Part 2

Top comments (0)