My global Git configuration file
[alias] | |
# List all aliases | |
la = "!git config -l | grep alias | cut -c 7-" | |
# View abbreviated SHA, description, and history graph of the latest 20 commits | |
l = log --pretty=oneline -n 20 --graph --abbrev-commit | |
lo = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' | |
ls = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate | |
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat | |
lt = log --graph --full-history --all --color --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s" | |
lds = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short | |
ld = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative | |
le = log --oneline --decorate | |
# View the current working tree status using the short format | |
s = status -s | |
# Show the diff between the latest commit and the current state | |
d = !"git diff-index --quiet HEAD -- || clear; git --no-pager diff --patch-with-stat" | |
# `git di $number` 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" | |
# Show modified files in last commit | |
dl = "!git ll -1" | |
#Show a diff last commit | |
dlc = diff --cached HEAD^ | |
# Pull in remote changes for the current repository and all its submodules | |
p = !"git pull; git submodule foreach git pull origin master" | |
# Clone a repository including all submodules | |
c = clone --recursive | |
# Commit all changes | |
ca = !git add -A && git commit -av | |
# Switch to a branch, creating it if necessary | |
go = "!f() { git checkout -b \"$1\" 2> /dev/null || git checkout \"$1\"; }; f" | |
# Get the working directory up to date | |
# http://haacked.com/archive/2014/07/28/github-flow-aliases/ | |
up = !git pull --rebase --prune $@ && git submodule update --init --recursive | |
save = !git add -A && git commit -m 'SAVEPOINT' | |
wip = commit -am "WIP" | |
undo = reset HEAD~1 --mixed | |
wipe = !git add -A && git commit -qm 'WIPE SAVEPOINT' && git reset HEAD~1 --hard | |
# Show verbose output about tags, branches, stashes, or remotes | |
tags = tag -l | |
branches = branch -a | |
remotes = remote -v | |
stashes = stash list | |
# Amend the currently staged files to the latest commit | |
amend = commit --amend --reuse-message=HEAD | |
# Credit an author on the latest commit | |
credit = "!f() { git commit --amend --author \"$1 <$2>\" -C HEAD; }; f" | |
# Interactive rebase with the given number of latest commits | |
reb = "!r() { git rebase -i HEAD~$1; }; r" | |
# Find branches containing commit | |
fb = "!f() { git branch -a --contains $1; }; f" | |
# Find tags containing commit | |
ft = "!f() { git describe --always --contains $1; }; f" | |
# Find 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" | |
# Find 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" | |
# Remove branches that have already been merged with master | |
# a.k.a. ‘delete merged’ | |
dm = "!git branch --merged | grep -v '\\*' | xargs -n 1 git branch -d" | |
# List contributors with number of commits | |
contributors = shortlog --summary --numbered | |
# Trash files instead of flat-out removing them | |
trash = "!mkdir -p .trash && git ls-files --others --exclude-standard | xargs mv -f -t .trash" | |
# Unstage a file that's been added but not committed | |
unstage = "reset HEAD --" | |
# See what's already been staged | |
staged="!git diff --cached" | |
# Git-SVN by Mark Jaquith | |
svn-diff = !git-svn-diff | |
stashq = -c commit.gpgsign=false stash | |
[apply] | |
# Detect whitespace errors when applying a patch | |
whitespace = fix | |
[core] | |
# Use custom `.gitignore` and `.gitattributes` | |
excludesfile = /Users/morganestes/.gitignore | |
attributesfile = ~/.gitattributes | |
# Treat spaces before tabs and all kinds of trailing whitespace as an error | |
# [default] trailing-space: looks for spaces at the end of a line | |
# [default] space-before-tab: looks for spaces before tabs at the beginning of a line | |
whitespace = space-before-tab,-indent-with-non-tab,trailing-space | |
# Make `git rebase` safer on OS X | |
# More info: <http://www.git-tower.com/blog/make-git-rebase-safe-on-osx/> | |
trustctime = false | |
#editor = atom --wait | |
editor = vim | |
[color] | |
# Use colors in Git commands that are capable of colored output when | |
# outputting to the terminal. (This is the default setting in Git ≥ 1.8.4.) | |
ui = auto | |
[color "branch"] | |
current = yellow reverse | |
local = yellow | |
remote = green | |
[color "diff"] | |
meta = yellow bold | |
frag = magenta bold # line info | |
old = red # deletions | |
new = green # additions | |
[color "status"] | |
added = yellow | |
changed = green | |
untracked = cyan | |
[help] | |
# Automatically correct and execute mistyped commands | |
autocorrect = 1 | |
[push] | |
# Use the Git 1.x.x default to avoid errors on machines with old Git | |
# installations. To use `simple` instead, add this to your `~/.extra` file: | |
# `git config --global push.default simple`. See http://git.io/mMah-w. | |
default = simple | |
# default = matching | |
# URL shorthands | |
[url "git@github.com:"] | |
insteadOf = "gh:" | |
pushInsteadOf = "github:" | |
pushInsteadOf = "git://github.com/" | |
[url "git://github.com/"] | |
insteadOf = "github:" | |
[url "git@gist.github.com:"] | |
insteadOf = "gst:" | |
pushInsteadOf = "gist:" | |
pushInsteadOf = "git://gist.github.com/" | |
[url "git://gist.github.com/"] | |
insteadOf = "gist:" | |
[user] | |
name = Morgan Estes | |
email = morgan.estes@gmail.com | |
signingkey = DD3EFAB9 | |
[diff] | |
renames = copies # Detect copies as well as renames | |
prompt = false | |
[merge] | |
# Include summaries of merged commits in newly created merge commit messages | |
log = true | |
[filter "hawser"] | |
clean = git hawser clean %f | |
smudge = git hawser smudge %f | |
required = true | |
[filter "lfs"] | |
clean = git-lfs clean %f | |
smudge = git-lfs smudge %f | |
required = true | |
[commit] | |
gpgsign = true | |
template = /Users/morganestes/.stCommitMsg | |
[difftool] | |
[mergetool] | |
[difftool "sourcetree"] | |
cmd = /Applications/DiffMerge.app/Contents/MacOS/DiffMerge --nosplash \"$LOCAL\" \"$REMOTE\" | |
path = | |
[mergetool "sourcetree"] | |
cmd = /Applications/DiffMerge.app/Contents/MacOS/DiffMerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$BASE\" \"$REMOTE\" | |
trustExitCode = true | |
[mergetool] | |
keepBackup = false | |
[credential] | |
helper = osxkeychain |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment