A collection of random useful Git snippets

This is the post that I’ll use as a living dumping ground for random useful git snippets that I come across. Enjoy!

git blame -w # ignores white space
git blame -M # ignores moving text
git blame -C # ignores moving text into other files

Use git blame to see when a change was REALLY made, as opposed to just a whitespace or copy/paste commit:

Fetch a file from another branch without switching branches:

git checkout <OTHER_BRANCH> -- path/to/file.txt

Delete already-merged git branches (except for specific ones you name):

git branch --merged | grep -v "\*" | grep -v master | grep -v develop | grep -v release | xargs -n 1 git branch -d

View the git log for a specific line or number of lines in a file:

git log -L 1,1:some-file.txt

Search all commit diffs for a specific string – both regex and non-regex versions

git rev-list --all | xargs git grep '<YOUR REGEX>' # regex
git rev-list --all | xargs git grep -F '<YOUR STRING>' # non-regex

View a diff on a specific file between the current branch and another branch

git diff some-other-branch some-filename.js

Move your last commit to a different branch, for when you accidentally commit to the wrong branch

# undo the last commit, but leave the changes available
git reset HEAD~ --soft
git add .
git stash

# move to the correct branch
git checkout name-of-the-correct-branch
git stash pop
git add .
git commit -m "your message here"

# now your changes are on the correct branch

Delete all untracked files, but do a dry run first:

git clean -fn

List the most recently updated branches:

git for-each-ref --sort=-committerdate refs/heads/ | head
search previous next tag category expand menu location phone mail time cart zoom edit close