summaryrefslogtreecommitdiffstatshomepage
path: root/gitconfig
blob: 93cb1a57c0f5159be395c7b57de36bfe5c8cd580 (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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
[user]
	email = tobyv13@gmail.com
	name = Toby Vincent
	username = tobyvin
	signingkey = 0xC8F6E06F5C8E2634
[url "git@github.com:"]
    insteadOf = gh:
    pushInsteadOf = "https://github.com/"
[core]
	editor = code --wait
[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE
[alias]
    ## basic
    st = status -s
    cl = clone
    ci = commit
    co = checkout
    br = branch
    r = reset
    cp = cherry-pick
    gr = grep -Ii

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

	## tweak defaults
    diff = diff --word-diff
    branch = branch -ra
    grep = grep -Ii
    bra = branch -ra
    ai = add --interactive

    ## log commands
    lg = log --graph --oneline --decorate --all
    lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
    lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
    lg3 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset) %C(bold cyan)(committed: %cD)%C(reset) %C(auto)%d%C(reset)%n''          %C(white)%s%C(reset)%n''          %C(dim white)- %an <%ae> %C(reset) %C(dim white)(committer: %cn <%ce>)%C(reset)' --all
    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
    lc  = "!f() { git ll "$1"^.."$1"; }; f"
    lnc = log --pretty=format:"%h\\ %s\\ [%cn]"
    fl = log -u
    filelog = log -u

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

    ## commit
    cm = commit -m
    cma = commit -a -m
    ca = commit --amend
    amend = commit --amend
    caa = commit -a --amend -C HEAD

    ## diff
    d = diff --word-diff
    dc = diff --cached

    ## diff last commit
    dlc = diff --cached HEAD^
    dr  = "!f() { git diff -w "$1"^.."$1"; }; f"
    diffr  = "!f() { git diff "$1"^.."$1"; }; f"

    ## reset commands
    r1 = reset HEAD^
    r2 = reset HEAD^^
    rh = reset --hard
    rh1 = reset HEAD^ --hard
    rh2 = reset HEAD^^ --hard

    ## stash
    sl = stash list
    sa = stash apply
    ss = stash save

    ## submodules
    # remove
    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"
    
    ## subtree
    # add
    sba = "!f() { git subtree add --prefix $2 $1 master --squash; }; f"
    # update/pull
    sbu = "!f() { git subtree pull --prefix $2 $1 master --squash; }; f"

    ## last tag created
    lasttag = describe --tags --abbrev=0
    lt = describe --tags --abbrev=0

    ## list remotes
    rem="!git config -l | grep remote.*url | tail -n +2"

    # list all aliases
    la = "!git config -l | grep alias | cut -c 7-"
	
    # worktree list {{{
    wl = worktree list

    # create git artifacts
	ignore = "!gi() { curl -sL https://www.toptal.com/developers/gitignore/api/$@  ;}; gi"
    attributes = "!ga() { curl -sL https://gist.githubusercontent.com/tobyvin/70f3671c76016063594ea45edbb97094/raw ;}; ga"