-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitconfig
97 lines (76 loc) · 3.89 KB
/
.gitconfig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
[user]
name = Juniper Stillwaggon
email = juniper.stillwaggon@gmail.com
[github]
user =
[credential]
helper = osxkeychain
[alias]
# list all aliases
feat = flow feature start
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
addnw = "!sh -c 'git diff -U0 -w --no-color \"$@\" | git apply --cached --ignore-whitespace --unidiff-zero -'"
# 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`\"'"
# show the committers in the last 100 commits, sorted by who has commited the most
review = "!git log --no-merges --pretty=%an | head -n 100 | sort | uniq -c | sort -nr"
# order files by number of commits, ascending
# 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"
# clean up all
forget = "!git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -D"
# 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 -XFR"
latest = "!git for-each-ref --sort='-committerdate' --format='%(color:red)%(refname)%(color:reset)%09%(committerdate)' refs/remotes | sed -e 's-refs/remotes/origin/--' | less -XFR"
# 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' -"