Skip to content

Instantly share code, notes, and snippets.

@oleg-koval
Last active May 9, 2018 12:34
Show Gist options
  • Save oleg-koval/c2551e60fd401d62b9a209cc9cfe3db6 to your computer and use it in GitHub Desktop.
Save oleg-koval/c2551e60fd401d62b9a209cc9cfe3db6 to your computer and use it in GitHub Desktop.
Fancy .gitconfig
[user]
name = Ragnar Lodbrok
email = [email protected]
[credential]
helper = osxkeychain
[core]
editor = atom --wait
excludesfile = /Users/ragnarlodbrok/.gitignore_global
[url "https://github.com/"]
insteadOf = gh:
[url "https://gist.github.com/"]
insteadOf = gist:
[url "https://bitbucket.org/"]
insteadOf = bb:
[diff]
mnemonicprefix = true
[alias]
# Add and remove all changes, note how this alias is calling another alias
addremove = !git r && git add . --all
# Show all of my configured aliases
aliases = !git config --list | grep 'alias\\.' | sed 's/alias\\.\\([^=]*\\)=\\(.*\\)/\\1\\ \t => \\2/' | sort
# For when you made that commit a bit too early, amend
amend = !git log -n 1 --pretty=tformat:%s%n%n%b | git commit -F - --amend
# Show all branches
br = branch -av
# Show the current branch name (usefull for shell prompts)
brname = !git branch | grep "^*" | awk '{ print $2 }'
# Delete a branch
brdel = branch -D
# Which files are receiving the most "love"
churn = !git log --all -M -C --name-only --format='format:' "$@" | sort | grep -v '^$' | uniq -c | sort | awk 'BEGIN {print "count,file"} {print $1 "," $2}'
# View the log and diff for a commit (previous if no SHA1 provided)
details = log -n1 -p --format=fuller
# Save a repo as a tarball
export = archive -o latest.tar.gz -9 --prefix=latest/
# Unstage changes from the index
unstage = reset HEAD --
# View a pretty git log with branch tree
g = !git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
# Return a list of commit SHA1s
l = "!f() { git log $* | grep '^commit ' | cut -f 2 -d ' '; }; f"
# Remove deleted files
r = !git ls-files -z --deleted | xargs -0 git rm
# Return the repository's root directory (usefull for shell prompts)
root = rev-parse --show-toplevel
# Update all submodules
subup = submodule update --init
# List all tags
tags = tag -l
# Start a new local repository and perform initial commit
this = !git init && git add . && git commmit -m \"Initial commit.\"
# Thin out older metadata within the repository, reduceses filesystem footprint
trim = !git reflog expire --expire=now --all && git gc --prune=now
# Check what you are adding step-by-step
addp = add -p
# Fancy git logs
lg1 = log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)— %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative
lg2 = log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(bold white)— %an%C(reset)' --abbrev-commit
lg = !"git lg1"
# Last tag in current branch
lastag = describe --exact-match --abbrev=0
# Push branch to remote
superpush = !git push --set-upstream origin $(echo $(git brname))
# Last tag in current branch
lastag1 = describe --exact-match --abbrev=0
lastag2 = describe --abbrev=0 --tags
# Push branch to remote
superpush = !git push --set-upstream origin $(echo $(git brname))
# reset master to remote
resetmaster = !git fetch origin && echo "Reseting master branch to remote" && git reset --hard origin/master && git fetch --tags
# reset current branch to remote
resetbr = !git fetch origin && echo "Reseting current branch to remote" && git reset --hard origin/$(echo $(git brname)) && git fetch --tags
#remove remote tag
rmlastagr = !git push --delete origin $(echo $(git lastag2))
#remove local tag
rmlastag = !git push --delete $(git lastag2)
# list remote tags
lsremotetags = ls-remote --tags origin
# cleanup local tags
cleanuptags = !git tag -l | xargs git tag -d && git fetch --tags
# git ls-remote --tags origin | git show-ref --tags --exclude-existing
# Pull && Fetch remote tags
pul = !git pull && echo "Fetching remote tags" && "git cleanuptags"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment