Skip to content

Instantly share code, notes, and snippets.

@chermed
Last active July 10, 2025 15:02
Show Gist options
  • Select an option

  • Save chermed/b0bbd7fcca8f77281f2d4c8558a743aa to your computer and use it in GitHub Desktop.

Select an option

Save chermed/b0bbd7fcca8f77281f2d4c8558a743aa to your computer and use it in GitHub Desktop.
git config --global remote.origin.prune true
git config --global core.fileMode false
git config --global core.autocrlf false
git config --global core.editor "vim"
git config --global pager.branch false
git config --global core.pager cat
git config --global alias.update-aliases '!curl https://gist.githubusercontent.com/chermed/b0bbd7fcca8f77281f2d4c8558a743aa/raw | sh - '
git config --global alias.rif '!git rm -r --cached . && git add . && git commit -m "Removing all files in .gitignore"'
git config --global alias.ignore '!function gi() { curl -L -s https://www.gitignore.io/api/$@ > .gitignore; } && gi'
git config --global alias.ignorepython '!function gi() { curl -L -s https://www.gitignore.io/api/osx,linux,python,visualstudiocode,terraform > .gitignore; } && gi'
git config --global alias.ignorego '!function gi() { curl -L -s https://www.gitignore.io/api/osx,linux,visualstudiocode,terraform,go > .gitignore; } && gi'
git config --global alias.prune-branches '!git remote prune origin && git branch -vv | grep -E '"'"': gone]|: disparue]'"'"' | awk '"'"'{print $1}'"'"' | xargs git branch -D'
git config --global alias.delete-merged '!git branch --merged | grep -E -v "\*|master|develop|staging|migration|version|extra|indus" | xargs git branch -D'
git config --global alias.shoot-merged '!git branch --merged | grep -E -v "\*|master|develop|staging|migration|version|extra|indus" | xargs git push -f origin --delete'
git config --global alias.l "log --all --oneline --decorate --graph"
git config --global alias.today 'log --since=midnight --oneline'
git config --global alias.yesterday 'log --since=yesterday.midnight --before=midnight --oneline'
git config --global alias.fromyesterday 'log --since=yesterday.midnight --oneline'
git config --global alias.co checkout
git config --global alias.st status
git config --global alias.sts 'status -sb'
git config --global alias.ci commit
git config --global alias.br branch
git config --global alias.mergeit 'merge --no-edit'
git config --global alias.simulate 'merge --no-commit'
git config --global alias.tryget 'cherry-pick --no-commit'
git config --global alias.unstage 'reset HEAD --'
git config --global alias.audit "grep -e ipdb -e 'print ' -e fixme -e todo -e xxx -i -n"
git config --global alias.l2 "log --date-order --date=iso --graph --full-history --all --pretty=format:'%x08%x09%C(red)%h %C(cyan)%ad%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08 %C(bold blue)%aN%C(reset)%C(bold yellow)%d %C(reset)%s'"
git config --global alias.l1 "log --oneline --pretty=format:'%C(red)%h %C(cyan)%ad%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08 %C(bold blue)%aN%C(reset)%C(bold yellow)%d %C(reset)%s'"
git config --global alias.life "log --all --oneline --decorate --graph --date=relative --date-order --pretty=format:'%C(green)%h %C(cyan)%ad %C(bold blue)%an %C(bold yellow)%d %C(reset)%s'"
git config --global alias.local "log --branches --not --remotes"
git config --global alias.last 'log -1 HEAD'
git config --global alias.lastcommit "for-each-ref --sort=committerdate refs/heads/ --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'"
git config --global alias.sdiff 'diff -w --word-diff-regex=[^[:space:]]'
git config --global alias.graph "log --graph --all --date=short --format=oneline --simplify-by-decoration --decorate --pretty=format:'%C(green)%h %C(cyan)%ad %C(bold blue)%an %C(bold yellow)%d %C(reset)%s'"
git config --global alias.shoot "push -f origin --delete"
git config --global alias.brremotecommit "for-each-ref --sort=committerdate refs/remotes --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'"
git config --global alias.brcommit "for-each-ref --sort=committerdate refs/heads --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'"
git config --global alias.tomergecommit '!git fetch --all && git remote prune origin && git for-each-ref --sort=committerdate refs/remotes --format="%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))" --no-merged'
git config --global alias.brpath "log --decorate --graph --simplify-by-decoration --oneline"
git config --global alias.backup '!BACKUP_FILE=".git_backups/$(date +%Y%m%d_%H%M%S)" && mkdir -p .git_backups && git br -avv > $BACKUP_FILE && git add $BACKUP_FILE && git commit -m "Backup git branches $BACKUP_FILE"'
git config --global alias.amend '!GIT_COMMITTER_DATE="$(date)" git commit --amend --no-edit --date "$(date)"'
git config --global alias.tomerge '!git fetch --all -p;(echo "Branch#Number of commits#Date#Name#Elapsed time"; for branch in `git branch -a --list --no-merged|sed "s/\*/ /g"|sed "/\/HEAD/d" |sed "s/remotes\///g" | sed "s/ //g"`; do count=$(git rev-list --count HEAD..$branch); commit=$(git log --date=iso8601 --pretty=format:"%ad#%an#%ar#" -1 $branch); echo "$branch#$count#$commit"; done ; ) | column -ts "#" | sort +3 -1'
git config --global alias.tomergev '!git fetch --all ; ( echo "Branch#Count#Changes"; for branch in `git branch -a --list --no-merged|sed "s/\*/ /g"|sed "/HEAD/d" |sed "s/remotes\///g" | sed "s/ //g"`; do lines=""; data=""; for line in `git diff HEAD..$branch --name-only`; do filename=$(basename -- "$line"); extension="${filename##*.}"; lines="$extension $lines"; done; for ext in `echo "$lines" | tr " " "\n" | uniq -u`; do data="*.$ext=(`echo "$lines" | tr " " "\n" | grep "$ext" | wc -l | sed "s/ //g"`) $data"; done; count=$(git rev-list --count HEAD..$branch); echo "$branch#$count#$data"; done; ) | column -ts "#"'
git config --global alias.tomergew '!exclude=$1; if [ $1 ]; then shift; fi; git fetch --all -p; ( echo "Branch#Count"; for branch in `git branch -a --list --no-merged|sed "s/\*/ /g"|sed "/HEAD/d" |sed "s/remotes\///g" | sed "s/ //g"`; do if [ $exclude ]; then if [ -z "${branch##*$exclude*}" ]; then continue; fi; fi; lines=""; data=""; for line in `git diff HEAD..$branch --name-only`; do filename=$(basename -- "$line"); extension="${filename##*.}"; lines="$extension $lines"; done; for ext in `echo "$lines" | tr " " "\n" | uniq -u`; do data=" *.$ext=(`echo "$lines" | tr " " "\n" | grep "$ext" | wc -l | sed "s/ //g"`)##@$data"; done; data="$data@##"; count=$(git rev-list --count HEAD..$branch); echo "$branch#Commits: $count"; echo "$data" | tr "@" "\n" ; done; ) | column -ts "#"'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment