# A good list of alises http://haacked.com/archive/2014/07/28/github-flow-aliases/ [alias] a = add br = branch c = commit ca = commit -a cm = commit -m cal = !git add -A && git commit # Commit all changes cam = commit -am cne = commit --no-edit co = checkout cp = cherry-pick d = diff --color-words dc = diff --cached p = push s = status ss = status -s sclone = clone --depth=1 up = pull 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 g = 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 rlc = reset --hard HEAD~1 # Remove last commit ulc = reset --soft HEAD~1 # Undo last commit unstage = reset HEAD publish = "!git push --set-upstream origin $(git branch-name)" 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\\+//'" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # 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