Git cheat sheet
Basic operations
git clone <repo_url> |
Clone and create new local repository |
git status |
List all the changes in the repository; new file, modification or deletion -s list all changes in short format //to list changes in specific directory |
git diff |
Compares modified files to staging area |
git diff --staged |
Compares staged files to last commit |
git add <file> |
Move file from working area to staging area -A or --all move all modified/new files to staging area //to exclude certain files and folders |
git commit -m “<message>” |
Commit all staged files to local project history |
git commit -a -m “<message>” |
Add and commit together. Short form for ‘git add -A && git commit -m <>’ |
git push <origin> <master> |
Push local commited changes to remote. <origin> is the server and <master> is the branch to which changes are pushed |
git pull --all |
Pull all new changes on remote to local |
Branching
git checkout <branch name> |
Create new branch |
git checkout -b <branch name> |
Create new branch and switch |
git merge <branch name> |
Merge branch |
git branch -d <branch name> |
Delete branch |
git branch |
List all local branches |
git branch -v |
List branches with last commit |
git branch --merged |
List all branches merged with current branch |
git branch --no-merged |
List all branches which haven’t yet merged |
Remote branch
git branch -r |
List all remote branches |
git checkout -b <branch-name> <remote-branch-name> |
Creates new local repo from this remote branch |
git push origin --delete <branch-name> |
Delete’s remote branch |
Stash
git stash |
Saves all files to stash |
git stash clear |
Delete all changes in stash |
git stash list |
List all changes in the stash |
git stash apply |
Pops and applies recent stash |
git stash show |
List all recent stash changes |
Rebase
git rebase <branch> |
Saves all files to stash |
git rebase --continue |
To continue after fixing rebase conflict issues |
View commit history
git log |
Lists summary of all commits |
git log -p -2 |
Lists last two commit details |
git log --stat |
Displays stats |
git log --pretty=online |
Display in one line. Other options for pretty is short, full and fuller |
git log --pretty=format: “%h %s” --graph |
Display as graph |
git log --oneline --decorate |
Shows current HEAD pointer. (Git keeps a special pointer called HEAD, which helps git to know in which branch it is on) |
Working with remotes
git remote |
List all remote branches (use -v option to show URL’s) |
git remote add pb <URL> |
Add remote repo |
git fetch pb |
Fetch new changes from remote (fetch will not merge changes automatically) |
git pull |
Fetch and merge changes into curent branch |
git push origin master |
Push local changes from origin to master branch in remote |
git remote show origin |
Inspect remote; lists all details about the remote |
git remote remove pb |
Remove remotes |
Tagging
git tag |
List all tags |
git tag -a v1.4 -m “my version” |
Create annotated tag |
git tag v1.4 |
Create a lightweight tag |
git tag -a v1.4 <commit-id> |
Tag a particular commit |
git push origin v1.4 |
Push particular tag to remote (By default ‘git push’ will not upload tags to remote) |
git push origin --tags |
Push all tags |
Undoing things
git reset HEAD <file> |
Un-stage a staged file |
git checkout -- <file> |
Undo a modified file |
git add <file> && git commit --amend |
Instead of creating new commit, this will add file to stage and then amends the most recent commit |
git reset <file> && git rm --cached <file> |
Remove tracked file. For example; target or .class files which are not needed to checkin |
git rm -r --cached <file> |
Delete from git but not from file system, next time this file will not be pushed |