Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Click here to download Git Bash
Description | Command |
---|---|
See where Git is located | which git |
Get the version of Git | git --version |
Create an alias (shortcut) for git status |
git config --global alias.st status |
Help | git help |
Description | Command |
---|---|
Initialize Git | git init |
Get everything ready to commit | git add . |
Get custom file ready to commit | git add index.html |
Commit changes | git commit -m "Message" |
Commit changes with title and description | git commit -m "Title" -m "Description..." |
Add and commit in one step | git commit -am "Message" |
Remove files from Git | git rm index.html |
Update all changes | git add -u |
Remove file but do not track anymore | git rm --cached index.html |
Move or rename files | git mv index.html dir/index_new.html |
Undo modifications (restore files from latest commited version) | git checkout -- index.html |
Restore file from a custom commit (in current branch) | git checkout 6eb715d -- index.html |
Description | Command |
---|---|
Show branches | git branch |
Create branch | git branch branchname |
Change to branch | git checkout branchname |
Create and change to new branch | git checkout -b branchname |
Rename branch | git branch -m branchname new_branchname or git branch --move branchname new_branchname |
Show all completely merged branches with current branch | git branch --merged |
Delete merged branch (only possible if not HEAD) | git branch -d branchname or git branch --delete branchname |
Delete not merged branch | git branch -D branch_to_delete |
Description | Command |
---|---|
Show commits | git log |
Show oneline-summary of commits | git log --oneline |
Show oneline-summary of commits with full SHA-1 | git log --format=oneline |
Show oneline-summary of the last three commits | git log --oneline -3 |
Show only custom commits | git log --author="Sven" git log --grep="Message" git log --until=2013-01-01 git log --since=2013-01-01 |
Show only custom data of commit | git log --format=short git log --format=full git log --format=fuller git log --format=email git log --format=raw |
Show changes | git log -p |
Show every commit since special commit for custom file only | git log 6eb715d.. index.html |
Show changes of every commit since special commit for custom file only | git log -p 6eb715d.. index.html |
Show stats and summary of commits | git log --stat --summary |
Show history of commits as graph | git log --graph |
Show history of commits as graph-summary | git log --oneline --graph --all --decorate |
Description | Command |
---|---|
Compare modified files | git diff |
Compare modified files and highlight changes only | git diff --color-words index.html |
Compare modified files within the staging area | git diff --staged |
Compare branches | git diff master..branchname |
Compare branches like above | git diff --color-words master..branchname^ |
Compare commits | git diff 6eb715d git diff 6eb715d..HEAD git diff 6eb715d..537a09f |
Compare commits of file | git diff 6eb715d index.html git diff 6eb715d..537a09f index.html |
Compare without caring about spaces | git diff -b 6eb715d..HEAD or git diff --ignore-space-change 6eb715d..HEAD |
Compare without caring about spaces | git diff -b 6eb715d..HEAD or git diff --ignore-space-change 6eb715d..HEAD |
Compare without caring about spaces | git diff -b 6eb715d..HEAD or git diff --ignore-space-change 6eb715d..HEAD |
Compare without caring about all spaces | git diff -w 6eb715d..HEAD or git diff --ignore-all-space 6eb715d..HEAD |
Useful comparings | git diff --stat --summary 6eb715d..HEAD |
Blame | git blame -L10,+1 index.html |
Description | Command |
---|---|
True merge (fast forward) | git merge branchname |
Merge to master (only if fast forward) | git merge --ff-only branchname |
Merge to master (force a new commit) | git merge --no-ff branchname |
Stop merge (in case of conflicts) | git merge --abort |
Stop merge (in case of conflicts) | git reset --merge // prior to v1.7.4 |
Undo local merge that hasn't been pushed yet | git reset --hard origin/master |
Merge only one specific commit | git cherry-pick 073791e7 |
Rebase | git checkout branchname » git rebase master or git merge master branchname |
(The rebase moves all of the commits in master onto the tip of branchname .) |
|
Cancel rebase | git rebase --abort |
Squash multiple commits into one | git rebase -i HEAD~3 (source) |
Squash-merge a feature branch (as one commit) | git merge --squash branchname (commit afterwards) |
Description | Command |
---|---|
Go back to commit | git revert 073791e7dd71b90daa853b2c5acc2c925f02dbc6 |
Soft reset (move HEAD only; neither staging nor working dir is changed) | git reset --soft 073791e7dd71b90daa853b2c5acc2c925f02dbc6 |
Undo latest commit | git reset --soft HEAD~ |
Mixed reset (move HEAD and change staging to match repo; does not affect working dir) | git reset --mixed 073791e7dd71b90daa853b2c5acc2c925f02dbc6 |
Hard reset (move HEAD and change staging dir and working dir to match repo) | git reset --hard 073791e7dd71b90daa853b2c5acc2c925f02dbc6 |
Hard reset of a single file (@ is short for HEAD ) |
git checkout @ -- index.html |
Description | Command |
---|---|
Test-Delete untracked files | git clean -n |
Delete untracked files (not staging) | git clean -f |
Unstage (undo adds) | git reset HEAD index.html |
Update most recent commit (also update the commit message) | git commit --amend -m "New Message" |
Description | Command |
---|---|
Put in stash | git stash save "Message" |
Show stash | git stash list |
Show stash stats | git stash show stash@{0} |
Show stash changes | git stash show -p stash@{0} |
Use custom stash item and drop it | git stash pop stash@{0} |
Use custom stash item and do not drop it | git stash apply stash@{0} |
Use custom stash item and index | git stash apply --index |
Create branch from stash | git stash branch new_branch |
Delete custom stash item | git stash drop stash@{0} |
Delete complete stash | git stash clear |
Description | Command |
---|---|
Show all released versions | git tag |
Show all released versions with comments | git tag -l -n1 |
Create release version | git tag v1.0.0 |
Create release version with comment | git tag -a v1.0.0 -m 'Message' |
Checkout a specific release version | git checkout v1.0.0 |
Description | Command |
---|---|
Show remote | git remote |
Show remote details | git remote -v |
Add remote upstream from GitHub project | git remote add upstream https//github.com/user/project.git |
Add remote upstream from existing empty project on server | git remote add upstream ssh//[email protected]/path/to/repository/.git |
Fetch | git fetch upstream |
Fetch a custom branch | git fetch upstream branchnamelocal_branchname |
Merge fetched commits | git merge upstream/master |
Remove origin | git remote rm origin |
Show remote branches | git branch -r |
Show all branches (remote and local) | git branch -a |
Create and checkout branch from a remote branch | git checkout -b local_branchname upstream/remote_branchname |
Compare | git diff origin/master..master |
Push (set default with -u ) |
git push -u origin master |
Push | git push origin master |
Force-Push | git push origin master --force |
Pull | git pull |
Pull specific branch | git pull origin branchname |
Fetch a pull request on GitHub by its ID and create a new branch | git fetch upstream pull/ID/headnew-pr-branch |
Clone to localhost | git clone https//github.com/user/project.git or git clone ssh//[email protected]/~/dir/.git |
Clone to localhost folder | git clone https//github.com/user/project.git ~/dir/folder |
Clone specific branch to localhost | git clone -b branchname https//github.com/user/project.git |
Clone with token authentication (in CI environment) | git clone https//oauth2<token>@gitlab.com/username/repo.git |
Delete remote branch (push nothing) | git push origin branchname or git push origin --delete branchname |
Description | Command |
---|---|
Create a zip-archive | git archive --format zip --output filename.zip master |
Export/write custom log to a file | git log --author=sven --all > log.txt |
Description | Command |
---|---|
Add or edit gitignore | nano .gitignore |
Track empty dir | touch dir/.gitkeep |
About .git ignore
Useful templates
Website https//git-lfs.github.com/
Description | Command |
---|---|
Install | brew install git-lfs |
Track *.psd
files git lfs track "*.psd"
(init, add, commit and push as written above)