158 lines
5.2 KiB
Plaintext
158 lines
5.2 KiB
Plaintext
# gitconfig
|
|
[user]
|
|
name = Nick Nisi
|
|
email = nick@nisi.org
|
|
[github]
|
|
user = nicknisi
|
|
[init]
|
|
templatedir = ~/.dotfiles/git/templates
|
|
[alias]
|
|
# list all aliases
|
|
la = "!git config -l | grep alias | cut -c 7-"
|
|
delete-merged-branches = "!f() { git checkout --quiet master && git branch --merged | grep --invert-match '\\*' | xargs -n 1 git branch --delete; git checkout --quiet @{-1}; }; f"
|
|
diff = diff --ignore-space-at-eol -b -w --ignore-blank-lines
|
|
cnv = commit --no-verify
|
|
pnv = push --no-verify
|
|
co = checkout
|
|
cob = checkout -b
|
|
s = status --short
|
|
ss = status
|
|
br = branch -v
|
|
|
|
# rebase commands
|
|
cont = rebase --continue
|
|
conf = "!git s | grep ^U"
|
|
|
|
l = log --graph --pretty=format:'%Cred%h%Creset %C(bold blue)%an%C(reset) - %s - %Creset %C(yellow)%d%Creset %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
|
|
|
|
# show what I did today
|
|
day = "!sh -c 'git log --reverse --no-merges --branches=* --date=local --after=\"yesterday 11:59PM\" --author=\"`git config --get user.name`\"'"
|
|
|
|
# order files by number of commits, ascending
|
|
# Written by Corey Haines
|
|
# Scriptified by Gary Bernhardt
|
|
# Show churn for a time range:
|
|
# $ git churn --since='1 month ago'
|
|
churn = "!f() { git log --all -M -C --name-only --format='format:' \"$@\" | sort | grep -v '^$' | uniq -c | sort | awk 'BEGIN {print \"count\tfile\"} {print $1 \"\t\" $2}' | sort -g; }; f"
|
|
|
|
# show all deleted files in the repo
|
|
deleted = "!git log --diff-filter=D --summary | grep delete"
|
|
|
|
# create an empty commit
|
|
empty = commit --allow-empty
|
|
|
|
# current branch
|
|
cbr = rev-parse --abbrev-ref HEAD
|
|
|
|
# submodule shortcuts
|
|
si = submodule init
|
|
su = submodule update
|
|
sub = "!git submodule sync && git submodule update"
|
|
|
|
# show number of commits per contributer, sorted
|
|
count = shortlog -sn
|
|
|
|
undo = reset --soft HEAD~1
|
|
amend = commit -a --amend
|
|
|
|
cleanup = "!git remote prune origin && git gc && git clean -df && git stash clear"
|
|
|
|
# rebase the current branch with changes from upstream remote
|
|
update = !git fetch upstream && git rebase upstream/`git rev-parse --abbrev-ref HEAD`
|
|
|
|
# tag aliases
|
|
# show the last tag
|
|
lt = describe --tags --abbrev=0
|
|
|
|
# assume aliases
|
|
assume = update-index --assume-unchanged
|
|
unassume = update-index --no-assume-unchanged
|
|
assumed = "!git ls-files -v | grep ^h | cut -c 3-"
|
|
unassumeall = "!git assumed | xargs git update-index --no-assume-unchanged"
|
|
|
|
# show the most recently touched branches
|
|
recent = "!git for-each-ref --sort='-committerdate' --format='%(color:red)%(refname)%(color:reset)%09%(committerdate)' refs/heads | sed -e 's-refs/heads/--' | less -r"
|
|
|
|
# grep commands
|
|
|
|
# 'diff grep'
|
|
dg = "!sh -c 'git ls-files -m | grep $1 | xargs git diff' -"
|
|
# diff grep changes between two commits
|
|
dgc = "!sh -c 'git ls-files | grep $1 | xargs git diff $2 $3 -- ' -"
|
|
# 'checkout grep'
|
|
cg = "!sh -c 'git ls-files -m | grep $1 | xargs git checkout ' -"
|
|
# add grep
|
|
ag = "!sh -c 'git ls-files -m -o --exclude-standard | grep $1 | xargs git add --all' -"
|
|
# add all
|
|
aa = !git ls-files -d | xargs git rm && git ls-files -m -o --exclude-standard | xargs git add
|
|
# remove grep - Remove found files that are NOT under version control
|
|
rg = "!sh -c 'git ls-files --others --exclude-standard | grep $1 | xargs rm' -"
|
|
|
|
# Kaleidoscope commands
|
|
dkal = difftool -y -t Kaleidoscope
|
|
mkal = mergetool -y -t Kaleidoscope
|
|
remotes = remote -v
|
|
|
|
# check out a local copy of a PR. https://gist.github.com/gnarf/5406589
|
|
pr = "!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f"
|
|
pr-clean = "!git for-each-ref refs/heads/pr/* --format='%(refname)' | while read ref ; do branch=${ref#refs/heads/} ; git branch -D $branch ; done"
|
|
[color]
|
|
diff = auto
|
|
status = auto
|
|
branch = auto
|
|
interactive = auto
|
|
ui = auto
|
|
[color "branch"]
|
|
current = green bold
|
|
local = green
|
|
remote = red bold
|
|
[color "diff"]
|
|
meta = yellow bold
|
|
frag = magenta bold
|
|
old = red bold
|
|
new = green bold
|
|
[color "status"]
|
|
added = green bold
|
|
changed = yellow bold
|
|
untracked = red
|
|
[color "sh"]
|
|
branch = yellow
|
|
[push]
|
|
# push will only do the current branch, not all branches
|
|
default = current
|
|
[branch]
|
|
# set up 'git pull' to rebase instead of merge
|
|
autosetuprebase = always
|
|
[diff]
|
|
renames = copies
|
|
mnemonicprefix = true
|
|
[difftool]
|
|
prompt = false
|
|
[apply]
|
|
# do not warn about missing whitespace at EOF
|
|
whitespace = nowarn
|
|
[core]
|
|
excludesfile = ~/.gitignore_global
|
|
pager = less -FXRS -x2
|
|
editor = vim
|
|
whitespace = cr-at-eol
|
|
[rerere]
|
|
enabled = true
|
|
[gitsh]
|
|
defaultCommand = s
|
|
[grep]
|
|
extendRegexp = true
|
|
lineNumber = true
|
|
[credential]
|
|
helper = osxkeychain
|
|
[difftool "Kaleidoscope"]
|
|
cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
|
|
[mergetool "Kaleidoscope"]
|
|
cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
|
|
trustexitcode = true
|
|
[rebase]
|
|
instructionFormat = "[%an - %ar] %s"
|
|
[pager]
|
|
diff = "diff-so-fancy | less --tabs=4 -RFX"
|
|
show = "diff-so-fancy | less --tabs=4 -RFX"
|