Git Cheatsheet



  • git config –global "[name]" Sets the name you want attached to your commit transactions
  • git config –global "[email address]" Sets the email you want attached to your commit transactions
  • git config –global color.ui auto Enables helpful colorization of command line output
  • git config –global push.default current Update a branch with the same name as current branch if no refspec is given
  • git config –global core.editor [editor] Which editor to use when commit and tag that lets you edit messages
  • git config –global diff.tool [tool] Specify which command to invoke as the specified tool for git difftool

Create repositories

  • git init [project-name] Creates a new local repository with the specified name
  • git clone [url] Downloads a project nd its entire version history

Make changes


  • git status Lists all new or modified files to be committed
  • git status -s Short view of status
  • git diff Shows file differences not yet staged
  • git add [file] Snapshots the file in preparation for versioning
  • git add . Add all modified files to be commited
  • git add '*.txt' Add only certain files
  • git add –patch filename.x (or -p for short) Snapshot only chunks of a file
  • git rm [file] Tell git not to track the file anymore
  • git diff –staged Show what has been added to the index via git add but not yet committed
  • git diff HEAD Shows what has changed since the last commit.
  • git diff HEAD^ Shows what has changed since the commit before the latest commit
  • git diff [branch] Compare current branch to some other branch
  • git difftool -d Same as diff, but opens changes via difftool that you have configured
  • git difftool -d master.. See only changes made in the current branch
  • git diff –no-commit-id –name-only –no-merges origin/master… See only the file names that has changed in current branch
  • git diff –stat See statistics on what files have changed and how
  • git reset [file] Unstages the file, but preserves its contents
  • git commit Record changes to git. Default editor will open for a commit message
  • git commit -m "[descriptive message]" Records file snapshots permanently in version history
  • git commit –amend Changing the history, of the HEAD commit

Group changes

  • git branch Lists all local branches in the current directory
  • git branch [branch-name] Create a new branch
  • git checkout [branch-name] Switches to the specified branch and updates the working directory
  • git checkout -b <name> <remote>/<branch> Switches to a remote branch
  • git checkout [filename] Return file to it’s previous version, if it hasn’t been staged yet
  • git merge [branch] Combines the specified branch’s history into the current branch
  • git merge –no–ff [branch] Merge branch without fast forwarding
  • git branch -a See the full list of local and remote branches
  • git branch -d [branch] Deletes the specified branch
  • git branch -D [branch] Hard branch delete, will not complain
  • git branch -m <oldname> <newname> Rename a branch

Refactor filenames

  • git rm [file] Deletes the file from the working directory and stages the deletion
  • git rm –cached [file] Removes the file from version control but preserves the file locally
  • git mv [file-original] [file-renamed] Changes the file name and prepares it for commit

Suppress tracking

+ .gitignore \*.log build/ temp-\* A text file named .gitignore suppresses accidental versioning of files and paths

matching the specified patterns


  • git ls-files –other –ignored –exclude-standard Lists all ignored files in this project


Save fragments


  • git stash Temporarily stores all modified tracked files
  • git stash pop Restores the most recently stashed files
  • git stash list Lists all stashed changesets
  • git stash drop Discards the most recently stashed changeset


Review history


  • git log Lists version history for the current branch
  • git log –follow [file] Lists version history for a file, including renames
  • git log –pretty=format:"%h %s" –graph Pretty commit view, you can customize it as much as you want
  • git log –author='Name' –after={1.week.ago} –pretty=oneline abbrev-commit


See what the author has worked on in the last week


  • git log –no-merges master.. See only changes in this branch
  • git diff [file-branch]…[second-branch] Shows content differences between two branches
  • git show [commit] Outputs metadata and content changes of the specified commit


Redo commits


  • git reset Unstage pending changes, the changes will still remain on file system
  • git reset [commit/tag] Undoes all commits after [commit], preserving changes locally
  • git reset –hard [commit] Discards all history and changes back to the specified commit


Synchronize changes


  • git fetch [bookmark] Downloads all history from the repository bookmark
  • git fetch -p Update history of remote branches, you can fetch and purge
  • git merge [bookmark]/[branch] Combines bookmark’s branch into current local branch
  • git push Push current branch to remote branch
  • git push [remote] [branch] Manually specify remote and branch to use every time
  • git push -u origin master If a remote branch is not set up as an upstream, you can make it so
  • git pull Downloads bookmark history and incorporates changes
  • git pull [remote] [branch] Specify to pull a specific branch
  • git remote See list of remote repos available
  • git remote -v Detailed view of remote repos available
  • git remote add [remote] [url] Add a new remote