aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/git/.gitconfig
blob: 4a7db612482b287c197947b1d90e36fe3e217331 (plain)
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
[user]
email = tobyv13@gmail.com
name = Toby Vincent
username = tobyvin
signingkey = 0xA0876F29023F43AF

[commit]
gpgsign = true

[init]
defaultBranch = main

[pull]
rebase = true

[merge]
ff = no

[fetch]
prune = true

[advice]
detachedHead = false

[diff]
tool = vscode

[difftool "vscode"]
cmd = code --wait --diff $LOCAL $REMOTE

[trailer]
separators = ":#"
[trailer "fix"]
key = "Fix #"

[alias]
# basic
st = status -s
cl = clone
ci = commit
co = checkout
br = branch
r = reset
rv = remote -v
cp = cherry-pick
dev = checkout develop
main = checkout main

# tweak defaults
grep = grep -Ii
diff = diff --word-diff
branch = branch -ra
ai = add --interactive
recommit = commit --amend -C HEAD
redate = rebase --committer-date-is-author-date

# log commands
lg = log --graph --oneline --decorate --branches --remotes --tags --abbrev-commit
ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%an]" --decorate --date=relative
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [a:%an,c:%cn]" --decorate --numstat
watch = "!f() { watch -c 'git -c color.ui=always lg | sed \"s/\\[m/\\[00m/\"'; }; f"

# undo http://megakemp.com/2016/08/25/git-undo/
undo = "!f() { git reset --soft $(git rev-parse --abbrev-ref HEAD)@{${1-1}}; }; f"
pop = git reset HEAD~

# rename branch
brn = "!f() { git branch -m \"$(git rev-parse --abbrev-ref HEAD)\" $1; git fetch origin; git branch -u origin/$1 $1; git remote set-head origin -a; }; f"

# squash the last N commits, inclusivly
squash = "!f(){ git reset --soft HEAD~${1} && git commit --edit -m\"$(git log --format=%B --reverse HEAD..HEAD@{1})\"; };f"

# grep on filename
f = "!git ls-files | grep -i"

# remove submodule
smrm = "!f(){ git rm --cached \"$1\";rm -r \"$1\";git config -f .gitmodules --remove-section \"submodule.$1\";git config -f .git/config --remove-section \"submodule.$1\";git add .gitmodules; }; f"

# generate git artifacts
ignore = "!f() { IFS=\",\"; curl -L -s \"https://www.toptal.com/developers/gitignore/api/$*\" ;}; f"
attributes = "!f() { curl -sL https://gist.githubusercontent.com/tobyvin/70f3671c76016063594ea45edbb97094/raw ;}; f"
license = "!f() { curl -sH 'Accept: application/vnd.github.v3+json' https://api.github.com/licenses/$1 | grep -oP '.*\"body\":\\s*\"\\K.*(?=\\s*\",)' | tr '\\n' '\\0' | xargs -0 printf '%b\\n' | sed \"s/\\[year\\]/$(date +'%Y')/\" | sed \"s/\\[fullname\\]/$(git config --get user.name)/\"; }; f"
[filter "lfs"]
	clean = git-lfs clean -- %f
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true