GIT CHEAT SHEET
CREATE
- Clone an existing repository:
$ git clone ssh://user@domain.com/repo.git
- Create a new local repository:
$ git init
LOCAL CHANGES
- Changed files in your working directory:
$ git status
- Changes 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 (do not amend published commits!):
$ 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 -av
- Switch HEAD branch:
$ git switch <branch>
- Create a new branch based on your current HEAD:
$ git branch <new-branch>
- Create a new tracking branch based on a remote branch:
$ git checkout --track <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 <shortname> <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> --delete <branch>
- Publish your tags:
$ git push --tags
MERGE & REBASE
- Merge
<branch>
into your current HEAD:$ git merge <branch>
- Rebase your current HEAD onto
<branch>
(do not rebase published commits!):$ 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 reset <commit>
- …and preserve uncommitted local changes:
$ git reset --keep <commit>