git-ignore() { local site="https://raw.githubusercontent.com/github/gitignore/master" if [[ $1 == "--global" ]]; then shift ignore_file=${HOME}/.gitignore_global site+="/Global" else ignore_file="./.gitignore" fi wget -qO- "${site}/${1}.gitignore" >> "${ignore_file}" } git-inject-clang-format() { local fromdir todir fromdir=${HOME}/.dotfiles/resources todir=.git/hooks mkdir -p "${todir}/pre-commit.d" git config hooks.clangformat.style file cp ${fromdir}/clang-format.template ./.clang-format cp ${fromdir}/pre-commit-all.hook ${todir}/pre-commit cp ${fromdir}/clang-format.hook ${todir}/pre-commit.d/clang-format } git-create() { mkcd "${1}"; shift git init touch .gitignore local message="Initializing repository" if [[ $# -ge 1 ]]; then for i in "$@"; do git-ignore "${i}"; done message+=" with ignore lists: [ $1" [[ $# -eq 1 ]] || message+="$(printf ", %s" "${@:2}")" message+=" ]" fi maybe_do git-ignore-local git add .gitignore git commit -m "${message}" } alias git-graph="git log --graph --pretty=oneline --abbrev-commit --decorate --all" alias git-cleanup='git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d'