Skip to content

Instantly share code, notes, and snippets.

@taxilian
Created November 3, 2011 23:57
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taxilian/1338308 to your computer and use it in GitHub Desktop.
Save taxilian/1338308 to your computer and use it in GitHub Desktop.
my aliases from my .gitconfig
[alias]
unadd = reset HEAD
#co = checkout
co = "!f(){ git checkout \"$@\" && git submodule update --init --recursive; }; f"
cp = cherry-pick
st = status
stat = status
br = branch
info = "!sh -c '[ $# -ne 0 ] && git remote show $1 && exit 0 || [ $# = 0 ] && git remote show origin && exit 0' -"
track = "!sh -c '[ $# = 2 ] && git branch --track \"$1\" \"$2\" && exit 0 || [ $# = 1 ] && git branch --track \"$1\" origin/\"$1\" && exit 0 || echo \"usage: git track <branch> [remote_branch]\\n\\nIf remote branch is not specified, the default is to use origin/<branch>\" && exit 1' -"
flush = "!git clean -dxf && git remote prune origin && git gc"
pulls = "!f(){ git pull \"$@\" && git submodule update --init --recursive; }; f"
# The below are courtesy of bobthecow
edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; $EDITOR `f`"
add-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; git add `f`"
lc = log ORIG_HEAD.. --stat --no-merges
smash = merge --no-commit --log
eat = branch -M
prune-all = !git remote | xargs -n 1 git remote prune
whois = "!sh -c 'git log -i --pretty=\"format:%an <%ae>\" --author=\"$1\" | sort -u' -"
whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short
this = !git init && ( [[ -n $(ls) ]] || touch .gitignore ) && git add . && git commit -m \"initial commit\"
sp = ![[ -z $(git status --porcelain -uno) ]] && git pull || git stash && git pull && git stash pop
spp = ![[ -z $(git status --porcelain -uno) ]] && git pull || git stash && git pull && git push && git stash pop
pp = !git pull && git push
ppu = !git pp && git submodule sync && git submodule update --init
ls = "!git status -suno"
ls-modified = "!git status --porcelain -uno | awk 'match($1, /M/) {print $2}'"
ls-added = "!git status --porcelain -uno | awk 'match($1, /A/) {print $2}'"
ls-deleted = "!git status --porcelain -uno | awk 'match($1, /D/) {print $2}'"
ls-renamed = "!git status --porcelain -uno | awk 'match($1, /R/) {print $2}'"
ls-copied = "!git status --porcelain -uno | awk 'match($1, /C/) {print $2}'"
ls-updated = "!git status --porcelain -uno | awk 'match($1, /U/) {print $2}'"
ls-staged = "!git status --porcelain -uno | grep -P '^[MA]' | awk '{ print $2 }'"
ls-untracked = "!git status --porcelain -uall | awk '$1 == \"??\" {print $2}'"
sup = !git submodule sync && git submodule update --init --recursive
# install t first: http://github.com/sjl/t
todo = !python ~/lib/t/t.py --task-dir "$(git rev-parse --show-toplevel)" --list TODO
bug = !python ~/lib/t/t.py --task-dir "$(git rev-parse --show-toplevel)" --list BUGS
alias = "!sh -c '[ $# = 2 ] && git config --global alias.\"$1\" \"$2\" && exit 0 || [ $# = 1 ] && [ $1 = \"--list\" ] && git config --list | grep \"alias\\.\" | sed \"s/^alias\\.\\([^=]*\\)=\\(.*\\).*/\\1@@@@=>@@@@\\2/\" | sort | column -ts \"@@@@\" && exit 0 || echo \"usage: git alias <new alias> <original command>\\n git alias --list\" >&2 && exit 1' -"
ignore = "!sh -c '([ $# = 2 ] && ([ \"$1\" = \"--local\" ] && echo \"$2\" >> \"./$(git rev-parse --show-cdup)/.git/info/exclude\" || ([ \"$2\" = \"--local\" ] && echo \"$1\" >> \"./$(git rev-parse --show-cdup)/.git/info/exclude\"))) || ([ $# = 1 ] && (([ \"$1\" == \"--list\" ] && git ls-files -i --exclude-standard) || (([ ! -e .gitignore ] && touch .gitignore || echo \"$(cat .gitignore)\" > .gitignore) && echo \"$1\" >> .gitignore))) || echo \"usage: git ignore <file>\\n git ignore --local <file>\\n git ignore --list\" >&2 && exit 1' -"
lol = log --graph --decorate --pretty=oneline --abbrev-commit
lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
cs = !git ls-staged | grep ".php" | xargs phpcs
peeps = !git log --pretty=format:%aN | sort | uniq -c | sort -rn
graph = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
rshow = remote show origin
last = !"clear;git --no-pager log -1"
rlog = reflog --abbrev --decorate
sref = show-ref --abbrev
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
slog = git shortlog -s -n
peeps = !git log --pretty=format:%aN | sort | uniq -c | sort -rn
lstat = log --relative --abbrev-commit --date=local --pretty=format:'%C(white)%h %C(cyan)%cr %C(green)by %cn %Creset%n%C(yellow)%cd%n%s' --stat
lost = !"git fsck | awk '/dangling commit/ {print $3}' | git show --format='SHA1: %C(yellow)%h%Creset %f' --stdin | awk '/SHA1/ {sub(\"SHA1: \", \"\"); print}'"
heads = !"git log origin/master.. --format='%Cred%h%Creset;%C(yellow)%an%Creset;%H;%Cblue%f%Creset' | git name-rev --stdin --always --name-only | column -t -s';'"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment