Cheat Sheet #1: Git Commands
CREATE
Clone an existing repository$ git clone <url>
Create a new local repository$ git init
LOCAL CHANGES
Changed files in working directory$ git status
Changed to tracked files$ git diff
Add all current changes to the next commit$ git add .
Add some changes in (file) to the next commit$ git add -p <file>
Commit all local changes in tracked files$ git commit -a
Commit previously staged changes$ git commit
Change the last commit$ git commit --amend
COMMIT HISTORY
Show all commits, starting with the newest$ git log
Show changes over time for a specific file$ git log -p <file>
Who changed what and when in <file>$ git blame <file>
BRANCHES & TAGS
List all existing branches$ git branch
Switch HEAD branch$ git checkout <branch>
Create a new branch based on your current HEAD$ git branch <new-branch>
Creat a new tracking branch based on a remote branch$ git branch --track <new-branch> <remote-branch>
Delete a local branch$ git branch -d <branch>
Mark the current commit with a tag$ git tag <tag-name>
UPDATE & PUBLISH
List all currently configured remotes$ git remote -v
Show information about a remote$ git remote show <remote>
Add new remote repository, named <remote>$ git remote add <remote> <url>
Download all changes from <remote>, but don't integrate into HEAD$ git fetch <remote>
Download changes and directly merge/integrate into HEAD$ git pull <remote> <branch>
Publish local changes on a remote$ git push <remote> <branch>
Delete a branch on the remote$ git push <remote> :<branch>
Publish your tags$ git push --tags
MERGE & RELEASE
Merge <branch> into your current HEAD$ git merge <branch>
Rebase your current HEAD onto <branch>$ git rebase <branch>
Abort a rebase$ git rebase --abort
Continue a rebase after resolving conflicts$ git rebase --continue
Use your configured merge tool to solve conflicts$ git mergetool
Use your editor to manually solve conflicts and (after resolving) mark file as resolved$ git add <resolved-file>
$ git rm <resolved-file>
UNDO
Discard all local changes in your working directory$ git reset --hard HEAD
Discard local changes in a specific file$ git checkout HEAD <file>
Revert a commit (by producing a new commit with contrary changes)$ git revert <commit>
Reset your HEAD pointer to a previous commit ...and discard all changes since then$ git reset --hard <commit>
...and preserve all changes as unstaged changes$ git git reset <commit>
...and preserve uncommitted lcoal changes$ git reset --keep <commit>
GETTING HELP & DOCUMENTATION
Get help on the command line$ git help <command>
BEST PRACTICES
- Commit related changes with small commits
- Test code before commit
- Use branches
- Commit often
- Write good commit messages
- Test code before commit
- Don't commit half-done work
- Write good commit messages
- Use branches
- Agree on a common workflow
- Version control is not a backup system