-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathdot_gitconfig_aliases
171 lines (115 loc) · 5.68 KB
/
dot_gitconfig_aliases
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# -*-mode:gitconfig-*- vim:ft=gitconfig
# ~/.gitconfig_alias
# =============================================================================
# Aliases for Git sourced by `~/.gitconfig`.
[alias]
# Lists aliases.
aliases = config --get-regexp ^alias\\.
# Amends the currently staged files to the latest commit.
amend = commit --amend --reuse-message=HEAD
# Lists all branches.
br = branch
# Shows verbose output about branches.
branches = branch -a
# Clones a repository including all submodules.
c = clone --recursive
# Commits all changes.
ca = !git add -A && git commit -av
# Lists the files with the most churn.
churn = !git --no-pager log --name-only --oneline | grep -v ' ' | sort | uniq -c | sort -nr | head
# Saves changes to the local repo.
ci = commit
# Switches to a branch, but doesn't create it.
co = checkout
# Shows list of files in a conflict state.
conflicts = !git diff --name-only --diff-filter=U
# Lists contributors with number of commits.
contributors = shortlog --summary --numbered
# Picks arbitrary commits by reference and appends them to the HEAD.
cp = cherry-pick
# Credits an author on the latest commit.
credit = "!f() { git commit --amend --author \"$1 <$2>\" -C HEAD; }; f"
# Shows the diff between the latest commit and the current state.
d = !"git diff-index --quiet HEAD -- || clear; git --no-pager diff --patch-with-stat"
# Shows the diff between the state `$number` revisions ago and the current state.
di = !"d() { git diff --patch-with-stat HEAD~$1; }; git diff-index --quiet HEAD -- || clear; d"
# Discards changes to a file.
discard = checkout --
# Removes branches that have been merged with master (delete merged).
dm = "!git branch --merged | grep -v '\\*' | xargs -n 1 git branch -d"
# Pretty-prints object's content.
dump = cat-file -p
# Finds branches containing commit.
fb = "!f() { git branch -a --contains $1; }; f"
# Finds commits by source code.
fc = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short -S$1; }; f"
# Finds commits by commit message.
fm = "!f() { git log --pretty=format:'%C(yellow)%h %Cblue%ad %Creset%s%Cgreen [%cn] %Cred%d' --decorate --date=short --grep=$1; }; f"
# Find tags containing commit
ft = "!f() { git describe --always --contains $1; }; f"
# Switches to a branch, creating it if necessary.
go = "!f() { git checkout -b \"$1\" 2> /dev/null || git checkout \"$1\"; }; f"
# Ignores case and skip binary files.
grep = grep -Ii
# Shows short SHA, description, and history graph of last 20 commits.
l = log --pretty=oneline -n 20 --graph --abbrev-commit
# Shows short SHA, description, history graph, time, and author of commits.
ll = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
# Shows short SHA, date, description, history graph, and author of commits.
lo = log --pretty=format:\"%Cred%h%Creset %Cgreen%ad%Creset | %s%C(auto)%d%Creset %C(bold blue)<%an>%Creset\" --graph --date=short
# Writes dangling objects to lost and found.
lost = fsck --lost-found
# Pulls in remote changes for the current repository and all its submodules.
p = git pull --recurse-submodules
# Forces push without overwriting the work of others.
pushf = push --force-with-lease
# Aborts rebase.
rba = rebase --abort
# Stages modified files and continues rebase.
rbc = "!f(){ git add -A && git rebase --continue; }; f"
# Rebases interactively with the given number of latest commits.
reb = "!r() { git rebase -i HEAD~$1; }; r"
# Shows verbose output about remotes.
remotes = remote -v
# Restores savepoint.
restore = "!f(){ git add -A && git commit -qm 'RESTORE SAVEPOINT'; git reset $1 --hard; }; f"
# Removes the old tag with this name and tag the latest commit with it.
retag = "!r() { git tag -d $1 && git push origin :refs/tags/$1 && git tag $1; }; r"
# Rebases interactively.
ri = "!f(){ git fetch origin && git rebase --interactive origin/${1-master}; }; f"
# Shows the current working tree status using the short format.
s = status -sb
# Saves savepoint.
save = !git add -A && git commit -m 'SAVEPOINT'
# Sets origin remote.
set-origin = remote set-url origin
# Sets upstream remote.
set-upstream = remote set-url upstream
# Displays repo disk consumption
size = git count-objects -v --human-readable
# Pulls remota and auto-updates local submodules.
spull = !git pull && git submodule sync --recursive && git submodule update --init --recursive
# Pushes to remote, including all its submodules recursively.
spush = push --recurse-submodules=on-demand
# Views the current working tree status.
st = status
# Lists stashes.
stashes = stash list
# Brings in remote changes and syncs back.
sync = !git pull --rebase && git push
# Shows verbose output about tags.
tags = tag -l
# Shows object type.
type = cat-file -t
# Undos commit and leaves files (only for non-public commits).
uncommit = reset --soft HEAD^
# Undos last commit.
undo = reset HEAD~1 --mixed
# Unstages a file.
unstage = reset -q HEAD --
# Brings in remote changes.
up = !git pull --rebase --prune $@ && git submodule update --init --recursive
# Commits as Work in Progress.
wip = commit -am "WIP"
# Wipes savepoint.
wipe = "!f() { rev=$(git rev-parse ${1-HEAD}); git add -A && git commit --allow-empty -qm 'WIPE SAVEPOINT' && git reset $rev --hard; }; f"