Git is the open source distributed version control system that allows to perform GitHub activities on your desktop. This cheat sheet summarizes commonly used Git command line instructions for quick reference.
list last 20 hashes in reverse
git log -n 20 --reverse --format="%h %ae %s" --abbrev-commit
try a new output for diffing
git diff --compaction-heuristic ...
--color-words ...
enable more thorough comparison
git config --global diff.algorithm patience
restoring a file from a certain commit relative to the latest
git checkout HEAD~<NUMBER> -- <RELATIVE_PATH_TO_FILE>
restoring a file from a certain commit relative to the given commit
git checkout <COMMIT_HASH>~<NUMBER> -- <RELATIVE_PATH_TO_FILE>
restoring a file from a certain commit
git checkout <COMMIT_HASH> -- <RELATIVE_PATH_TO_FILE>
creating a diff file from unstaged changes for a specific folder
git diff -- <RELATIVE_PATH_TO_FOLDER> changes.diff
applying a diff file
- go to the root directory of your repository
- run:
git apply changes.diff
show differences between last commit and currrent changes:
git difftool -d
referring to:
- last commits
... HEAD~1 ...
- last 3 commits
... HEAD~3 ...
show the history of changes of a file
git log -p -- ./Scripts/Libs/select2.js
ignoring whitespaces
git rebase --ignore-whitespace <BRANCH_NAME>
pulling for fast-forward only (eliminating a chance for unintended merging)
git pull --ff-only
list of all tags
git fetch
git tag -l
archive a branch using tags
git tag <TAG_NAME> <BRANCH_NAME>
git push origin --tags
you can delete your branch now
get a tagged branch
git checkout -b <BRANCH_NAME> <TAG_NAME>
list of all branches that haven't been merged to master
git branch --no-merge master
enable more elaborate diff algorithm by default
git config --global diff.algorithm histogram
list of all developers
git shortlog -s -n -e
display graph of branches
git log --decorate --graph --all --date=relative
or
git log --decorate --graph --all --oneline
remembering the password
git config --global credential.helper store
git fetch
the first command tells git to remember the credentials that you are going to provide for the second command
path to the global config
C:\Users\Bykov\.gitconfig
example of a global config
[user]
email = *****
name = Aleksey Bykov
password = *****
[merge]
tool = p4merge
[mergetool "p4merge"]
cmd = p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
path = \"C:/Program Files/Perforce\"
trustExitCode = false
[push]
default = simple
[diff]
tool = meld
compactionHeuristic = true
[difftool "p4merge"]
cmd = p4merge.exe \"$LOCAL\" \"$REMOTE\"
path = C:/Program Files/Perforce/p4merge.exe
[difftool "meld"]
cmd = \"C:/Program Files (x86)/Meld/Meld.exe\" \"$LOCAL\" \"$REMOTE\"
path = C:/Program Files (x86)/Meld/Meld.exe
viewing differences between current and other branch
git difftool -d BRANCH_NAME
viewing differences between current and stash
git difftool -d stash
viewing differences between several commits in a diff tool
git difftool -d HEAD@{2}...HEAD@{0}
view all global settings
git config --global -l
delete tag
git tag -d my-tag
git push origin :refs/tags/my-tag
pushing tags
git push --tags
checking the history of a file or a folder
git log -- <FILE_OR_FOLDER>
disabling the scroller
git --no-pager <...>
who pushed last which branch
git for-each-ref --format="%(committerdate) %09 %(refname) %09 %(authorname)"
deleting remote branch
git push origin :<BRANCH_NAME>
deleting remote branch localy
git branch -r -D <BRANCH_NAME>
or to sync with the remote
git fetch --all --prune
deleting local branch
git branch -d <BRANCH_NAME>
list actual remote branchs
git ls-remote --heads origin
list all remote (fetched) branches
git branch -r
list all local branches
git branch -l
find to which branch a given commit belongs
git branch --contains <COMMIT>
updating from a forked repository
git remote add upstream https://github.com/Microsoft/TypeScript.git
git fetch upstream
git rebase upstream/master