-
stashing everything except staged changes:
git stash -ku
-
fixing dates and authors in the commits:
git rebase -i HEAD~<NUMBER_OF_LAST_COMMITS_TO_REBASE>
now mark all the commits listed with
e
(oredit
), savenow do
git commit --amend --date="now" --author="Aleksey Bykov <[email protected]>"
or
git commit --amend --reset-author --no-edit
now do
git rebase --continue
repeat until all is done
-
list of commits that are not in master:
git log --oneline fix/bld/48976-49181-gold-bar ^master git log --cherry-mark --oneline fix/bld/48976-49181-gold-bar...master git log --cherry-mark --oneline fix/bld/48976-49181-gold-bar..master
-
specifying revisions: http://schacon.github.io/git/git-rev-parse.html#_specifying_revisions
-
view a diff of 2 files in 2 different commits:
git diff <HASH-1>:<PATH-A> <HASH-2>:<PATH-B>
-
show file at certain revision:
git show <HASH>:<PATH>
-
list of all affected files both tracked/untracked (for automation)
git status --porcelain
-
name of the current banch and nothing else (for automation)
git rev-parse --abbrev-ref HEAD
-
all commits that your branch have that are not yet in master
git log master..<HERE_COMES_YOUR_BRANCH_NAME>
-
setting up a character used for comments
git config core.commentchar <HERE_COMES_YOUR_COMMENT_CHAR>
-
fixing
fatal: Could not parse object
after unsuccessful revertgit revert --quit
-
view diff with inline changes (by lines)
git diff --word-diff=plain master
-
view diff of changes in a single line file (per char)
git diff --word-diff-regex=. master
-
view quick stat of a diff
git diff --shortstat master git diff --numstat master git diff --dirstat master
-
undo last just made commit
git reset HEAD~
-
list last 20 hashes in reverse
git log --format="%p..%h %cd %<(17)%an %s" --date=format:"%a %m/%d %H:%M" --reverse -n 20
-
list commits between dates
git log --format="%p..%h %cd %<(17)%an %s" --date=format:"%a %m/%d %H:%M" --reverse --after=2016-11-09T00:00:00-05:00 --before=2016-11-10T00:00:00-05:00
-
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 ...
- last commits
-
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
Created
September 28, 2018 12:31
-
-
Save thaJeztah/c1ec7da23ab609b55133fd3c1dc12b8e to your computer and use it in GitHub Desktop.
Git cheat list
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment