A topic that I plan to cover is the git index but some people already have. These two links describe nearly the same thing except one uses git add -i and the other git add -p. Git’s index is a great staging area to use before putting commits into the repo.

Have you ever committed something, tried to git rebase, and everything went horribly horribly wrong? Or accidentally git reset --hard HEAD^ when you meant to git reset HEAD^? Have no fear, git reflog is here!
Read the rest of this entry »

Some people don’t seem to understand how git gc fits in with the git object database or even how the git object database works. Here’s a description of the git object database and why running git gc helps performance.

Read the rest of this entry »

git-stash is a recent addition to git. It was introduced in version 1.5.3.

The best way to describe what git-stash is useful for is describing a scenario.

Pretend you’re in the middle of working on feature A. You’ve created a branch and have a few patches in it. In the middle of working on your current patch, you find a pretty glaring bug that existed before you started. How will you fix it? Read the rest of this entry »

Welcome young grasshopper to the git-fu temple.  Here you will be trained in the ancient art of git-fu.  All secrets will be revealed to you during your training.

The purpose of this blog is not to try and tell everyone that git is better, but to highlight the less known but very useful features available to a skilled practitioner of git-fu.   I will point out how other version control systems do similar things, not to show how git is superior but to try to find equivalence and give people frames of reference.