| Stash | ←→ | Workspace★ | ←→ | Index (or “Staging” or “Cache”) | ←→ | Local Repository | ←→ | Remote Repository |
| italics | variable |
| [brackets] | optional argument |
| git config --global user.name ‘name’ | specify name to associate with all of your commits |
| git config --global user.email [email protected] | specify email address to associate with all of your commits |
| git init | create a repository in the current directory |
| git clone url | clone a remote repository into a subdirectory |
| git status | show status of the working tree |
| git diff [path] | show diff of changes between the working tree and HEAD |
| git diff --cached | show diff between staged changes and HEAD |
| git log [from[..to]] | view commit log for a given revision |
| git add directory file1 file2 | git add directory, file, or files recursively |
| git mv /source/path destination/path | move file or directory to new location |
| git rm path | remove file from working tree |
Undo / Redo
| git reset --soft HEAD^ | undo previous commit and keep changes in the working tree |
| git reset --hard HEAD^ | reset the working tree to the last commit (discard all pending changes) |
| git commit -a --amend | replace last commit with a new one |
| git checkout -- | discard uncommitted changes to the specified file in the working directory |
| git revert reference | creates a new commit that reverses changes from previous commit(s) |
| test sha1-A = $(git merge-base sha1-A sha1-B) | tests whether merging sha1-B into sha1-A is achievable as a fast forward; non-zero exit status is false |
| git fetch [repository] | fetch changes from a repostory |
| git pull [repository] | fetch and merge changes from a repository |
| git branch | list local branches |
| git checkout branch | switch working tree to the specified branch |
| git checkout - | switch back to previous branch |
| git checkout -b branch | create, then switch to a new branch with the specified name |
| git merge branch | merge changes from the specified branch to the current working directory |
| git mergetool | open the default merge tool, to resolve merge conflicts |
| git log | view commit log |
| git commit [-m ‘commit message’] | commit files that have been stages |
| git tag | create a tag pointing to the current revision |
| git push [repository] [branch] | push changes to a remote repository |
| git push -u origin master | pushes the “master” branch to “origin” remote and sets up tracking |
| git remote | list remote repositories |
| git remote add remote url | add remote to list of tracked repositories |
| git help [command] | display “man” (manual) page for a git command |
| git command -h | display a compact reference for the specified command |
| git stash save name | create a new stash with the name specified |
| git stash apply name | apply an existing stash to the working directory |
| git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short | a colorful graphical version of the git log |
| git describe —tags | shows the name of the tag assigned to the current working directory, if there is one |
| git bisect | perform bisect debugging to find which commit introduced a bug |
| git config —list | view all current configuration settings |
| git cherry-pick reference | selectively merge individual commits from another local branch |
| git rebase —interactive HEAD~3 | squash commits with rebase |
| git reflog | use reflog to recover from major mistakes |
| M | modified | file has been modified |
| C | copy-edit | file has been copied and modified |
| R | rename-edit | file has been renamed and modified |
| A | added | file has been added |
| D | deleted | file has been deleted |
| U | unmerged | file has conflicts after a merge |
| master | default development branch |
| origin | default upstream branch |
| HEAD | current branch |
| HEAD^ | parent of HEAD |
| HEAD^4 | great-great grandparent of HEAD |
| foo..bar | from reference foo to reference bar |
| repository | a collection of commits, each of which is a snapshot of the project’s working tree at a particular time |
| index | a staging area for commits on their way to the local repository |
| working tree | a directory on the filesystem with a repository associated with it |
| commit | a snapshot of a working tree at a particular point in time |
| branch | a line of development to which changes can be made |
| tag | a name for a commit that is (intended to be) permanently associated with a commit |
| master | a default branch |
| HEAD | specifies what branch is currently checked out |
| SHA-1 has | a 40-character hexadecimal checksum string, calculated based on the contents of a file or directory structure in git |
| Git Immersion | an excellent interactive tutorial (if you read only one resource, make it this one) |
| Try Git | an interactive in-browser tutorial on the basics of git |
| Git Parable | a story that helps explain what git is doing behind the scenes |
| Git Ready | a series of mini-tutorials organized by skill level |
| Git for Ages 4 and Up | video of a presentation explaining git commands using Tinkertoys |
| Git Reference | a concise introduction to the 20 most commonly used commands |
| A Visual Git Reference | visual explanations of common commands (great example of how staging works) |
| A successful Git branching model | a workflow for managing releases using Git |
| gitflow | a suite of commands to streamline the workflow above |
| git-achievements | turns learning git into a game |
| Pro Git | a free online copy of the comprehensive Pro Git book |
| Install Bash git completion | enable tab completion of git commands |
| Git cheat sheet, extended edition | a printable cheat sheet, similar in scope to this presentation |