You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

256 lines
7.3 KiB

# A good list of alises http://haacked.com/archive/2014/07/28/github-flow-aliases/
[alias]
# Staging
a = add
aa = add --all
# Branch
br = branch
branch-name = rev-parse --abbrev-ref HEAD
branch-diff = diff master...HEAD
branch-files = "!git diff master...HEAD --name-status | sed '/^D/d ; s/^.\\s\\+//'"
# Commit
c = commit
ca = commit -a
cm = commit -m
cal = !git add -A && git commit # Commit all changes
cam = commit -am
cne = commit --no-edit
amend = commit --amend
amend-all = !git add --all && git commit --amend --reuse-message=HEAD
# Clone
cl = clone
sclone = clone --depth=1
# Checkout
co = checkout
cb = checkout -b
# Cherry-pick
cp = cherry-pick
# Diff
d = diff --color-words
dc = diff --cached
df = !"git diff-index --quiet HEAD -- || clear; git --no-pager diff --patch-with-stat"
# Merge
m = merge
# Pull
up = pull
plom = pull origin master
plum = pull upstream master
preb = !git fetch upstream && git rebase upstream/master
# Push
p = push
pom = push origin master
poh = push origin head
# Stash
st = stash
stp = stash pop
# Status/Logging
s = status
ss = status -sb
hist = log --graph --pretty=custom # Show custom graph
l = log --pretty=custom # Show custom log
ll = log --stat --abbrev-commit
lc = shortlog --summary --numbered # List contributors
# Reset
unstage = reset HEAD -- # Mixed reset (affects HEAD and Index)
undo = reset --soft HEAD~1 # Undo last commit (affects HEAD only)
reset = reset --hard HEAD~1 # Remove last commit (from HEAD, Index and Working Dir)
# Remote
r = remote -v
# Submodules
subpl = submodule update --init --recursive
# Git flow
new = !git pull origin develop && git flow feature start
done = !git pull origin develop && git flow feature finish "$(git symbolic-ref --short HEAD | sed -n 's/^feature\\///p')"
go = !git checkout $1 && pull
master = !git checkout master && pull
develop = !git checkout develop && pull
mmm = !git fetch origin master && git rebase origin/master
ddd = !git fetch origin develop && git rebase origin/develop
# Misc
publish = "!git push --set-upstream origin $(git branch-name)"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Find commits by source code
cc = "!f() { \
git log --pretty=custom --decorate --date=short -S\"$1\"; \
}; f"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Find commits by commit message
cm = "!f() { \
git log --pretty=custom --decorate --date=short --grep=\"$1\"; \
}; f"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Credit an author on the latest commit
credit = "!f() { \
if [ -n \"$1\" ] && [ -n \"$2\" ]; then \
git commit --amend --author \"$1 <$2>\" -C HEAD; \
fi \
}; f"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# List remote branches
lrb = "!f() { \
remote="${1:-origin}"; \
git ls-remote --heads "$remote"; \
}; f"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Merge GitHub pull request on top of the current branch or,
# if a branch name is specified, on top of the specified branch
mpr = "!f() { \
declare currentBranch=\"$(git symbolic-ref --short HEAD)\"; \
declare branch=\"${2:-$currentBranch}\"; \
if [ $(printf \"%s\" \"$1\" | grep '^[0-9]\\+$' > /dev/null; printf $?) -eq 0 ]; then \
git fetch origin refs/pull/$1/head:pr/$1 && \
git checkout -B $branch && \
git rebase $branch pr/$1 && \
git checkout -B $branch && \
git merge pr/$1 && \
git branch -D pr/$1 && \
git commit --amend -m \"$(git log -1 --pretty=%B)\n\nClose #$1\"; \
fi \
}; f"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Remove the tag with the specified tag name if
# exists and tag the latest commit with that name
retag = "!f() { \
git tag -d "$1" &> /dev/null; \
git tag $1; \
}; f"
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# So much color
[color]
ui = always
[color "branch"]
current = green bold
local = green
remote = yellow
[color "diff"]
frag = magenta
meta = yellow
new = green
old = red
[color "diff-highlight"]
oldNormal = red bold
oldHighlight = "red bold 52"
newNormal = "green bold"
newHighlight = "green bold 22"
[color "status"]
added = green reverse
changed = yellow reverse
untracked = red reverse
# Git mergetool
[merge]
tool = opendiff
[core]
editor = nano
abbrev = 12
attributesfile = ~/.gitattributes
excludesfile = ~/.gitignore
autocrlf = input
mergeoptions = --no-edit
ignorecase = false
[pager]
# Insanely beautiful diffs ==> npm install -g diff-so-fancy
diff = diff-so-fancy | less --tabs=4 -RFX
show = diff-so-fancy | less --tabs=4 -RFX
[diff "bin"]
# Use `hexdump` to diff binary files
textconv = hexdump -v -C
[pretty]
custom = "%C(magenta)%h%C(red)%d %C(yellow)%ar %C(green)%s %C(yellow)(%an)"
# │ │ │ │ └─ author name
# │ │ │ └─ message
# │ │ └─ date (relative)
# │ └─ decorations (branch, heads or tags)
# └─ hash (abbreviated)
[help]
# Correct typos
autocorrect = 1
# Any GitHub repo with my username should be checked out r/w by default
# http://rentzsch.tumblr.com/post/564806957/public-but-hackable-git-submodules
[url "git@github.com:nicksp/"]
insteadOf = "git://github.com/nicksp/"
# Rewrites of repo paths
[url "git@github.com:"]
insteadOf = "gh:"
insteadOf = "git://github.com"
pushInsteadOf = "github:"
pushInsteadOf = "git://github.com/"
pushInsteadOf = "https://github.com/"
[url "git://github.com/"]
insteadOf = "github:"
[url "git@gist.github.com:"]
insteadOf = "gst:"
pushInsteadOf = "gist:"
pushInsteadOf = "git://gist.github.com/"
pushInsteadOf = "https://gist.github.com/"
[url "git://gist.github.com/"]
insteadOf = "gist:"
# Push easily http://stackoverflow.com/a/23918418/89484
[push]
# Make `git push` automatically push relevant
# annotated tags when pushing branches out
followTags = true
default = current
# Use separate file for username / github token / etc
[include]
path = ~/.gitconfig.local
[filter "lfs"]
clean = git lfs clean %f
smudge = git lfs smudge %f
required = true
[fetch]
prune = true