Git Commands Cheat Sheet

• Updated June 20, 2017


git is an extremely powerful version control system created by Linus Torvalds.

This post will be an ever growing list of git commands I frequently use.

Set Global Name and Email

git config --global user.name "Firstname Lastname"
git config --global user.email "you@example.com"

Change Author and Committer Name and Email

This is not a command you should run on a git repo being shared. Only run this command if you have a git repo that only you work in, and want to change the author and committer name and email on every commit. Every commit’s hash will be recalculated.

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='New Author Name'; GIT_AUTHOR_EMAIL='New Author Email'; GIT_COMMITTER_NAME='New Committer Name'; GIT_COMMITTER_EMAIL='New Committer Email';" HEAD

Or, with line breaks to read easier:

git filter-branch -f --env-filter "
    GIT_AUTHOR_NAME='New Author Name'
    GIT_AUTHOR_EMAIL='New Author Email'
    GIT_COMMITTER_NAME='New Committer Name'
    GIT_COMMITTER_EMAIL='New Committer Email'
  " HEAD

Amend Last Commit Message

git commit --amend

Undo the Last Commit

Keep Changes

git reset HEAD~1

Lose All Changes

Use extreme caution running this command.

git reset --hard HEAD~1

Git Commit with Empty Message

Normally you wouldn’t git commit with an empty message. But if you’re editing Gists from GitHub on your workstation, this is very useful:

git commit -a --allow-empty-message -m ''

Recover Hard Deleted Commit

If you deleted a commit using git reset --hard HEAD~1 and need to recover it, you can recover it with the following commands:

git fsck --lost-found

One to many dangling commits should be returned.

At the very least, you will need to know the first 7 digits of your deleted commit’s SHA hash. You should have this short SHA hash somewhere in your terminal scroll back. If you don’t have it, and you have many dangling commits, you can run git show <SHA HASH> on each dangling commit to figure out the right one to recover.

Once you have the 7 digit short SHA or the entire SHA hash, merge it into your current branch with the following command:

git merge <SHA HASH>

Remove Untracked Files

git clean -f -d

Remove Untracked and Ignored Files

git clean -f -x -d

Find Particular Commit in Branch or Tag

If the commit is on a local tracking branch:

git branch --contains <COMMIT>

If the commit is on a remote tracking branch:

git branch -a --contains <COMMIT>

If the commit is in a tag:

git tag --contains <COMMIT>

Merge Branch with One Commit

If you have been developing in a branch that contains a lot of commits you would rather not merge into the master branch, you can merge and squash all those commits into one commit by using the following commands:

git checkout master
git merge --squash dev
git commit -a -m "Commit message"

Delete Remote Branch

git push origin --delete <BRANCH>

Different Git Log Outputs

One Line Git Log

git log --oneline

Styled Git Log

git log --all --graph --decorate --oneline --abbrev-commit

Count Number of Commits

git shortlog -sn

Get Commit Short SHA

Run the following command to obtain the 7 character short SHA, perhaps to use for a Docker image tag, for a particular commit:

git rev-parse --short <SHA>

References

If you found this post useful and would like to help support this site - and get something for yourself - sign up for any of the services listed below through the provided links.

The following links are part of affiliate programs, and I will receive a referral payment from any of the services you sign-up for.

  • Get Faster Shipping: About to order some stuff on Amazon but want to get more value out of the money you would normally pay for shipping? Sign-up for a free, 30-day trial of Amazon Prime to get free two-day shipping, access to thousands of movies and TV shows, and more.
  • Start Investing Now: Looking to start investing some of your saved income? Get started by opening an account with Webull, where upon sign-up and opening a brokerage account with an initial deposit of $100 or more you will receive free stock(s). The promotions are always changing, so be sure to click the link to see the latest.

Thanks for reading and take care.