Skip to content

Latest commit

 

History

History
188 lines (171 loc) · 9.32 KB

README.md

File metadata and controls

188 lines (171 loc) · 9.32 KB

Git Cheat Sheet

What is git?

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

Setup

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

General

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

Branch

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

Log

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

Compare

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

Merge

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)

Reset

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

Update & Delete

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"

Stash

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

Releases & Version Tags

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

Collaborate

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

Archive

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

Gitignore & Gitkeep

Description Command
Add or edit gitignore nano .gitignore
Track empty dir touch dir/.gitkeep

About .git ignore
Useful templates

Large File Storage

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)

Reference