#!/usr/bin/env bash [[ ! "${DOT_FILES}" ]] && echo "NOT setting dotGit aliases, since DOT_FILES not set." && return [[ ! "${DOT_HOME}" ]] && echo "NOT setting dotGit aliases, since DOT_HOME not set." && return # the master alias alias .git='git --git-dir=${DOT_FILES} --work-tree=${DOT_HOME}' # and all the shortcuts alias .g='.git' alias .ga='.g add' alias .gc='.g commit' alias .gco='.g checkout' alias .gd='.g diff' alias .gss='.g status --short' alias .gp='.g push' alias .gl='.g pull' alias .glo='.g log --oneline --decorate' alias .glg='.g log --stat' alias .glgp='.g log --stat --patch' # if fzf is installed we can have nice things # https://github.com/junegunn/fzf if [[ $(command -v fzf) ]]; then # shellcheck disable=SC2142,SC215 alias .ge='_dotgit_ge(){ cd ${DOT_HOME} .g ls-files --full-name | fzf -0 --bind "enter:execute($EDITOR {})" \ --preview "bat -n --color=always {}" \ --preview-window "right,60%,<60(down,75%),+{2}/2" \ -q "${@:-}" cd ${OLDPWD} unset -f _dotgit_ge; }; _dotgit_ge' # shellcheck disable=SC2142 alias .gg='_dotgit_gg(){ cd ${DOT_HOME} .g grep --full-name --color=always -n "$@" | fzf -0 --ansi -d ":" --bind "enter:execute($EDITOR +{2} {1})" \ --preview "bat -n -H {2} --color=always {1}" \ --preview-window "right,60%,<60(down,75%),+{2}/2" cd ${OLDPWD} unset -f _dotgit_gg; }; _dotgit_gg' else # simplified grep but no "interactive file select" alias .gg='.g grep' fi alias .ginit='git init --bare "${DOT_FILES}"; .g config --local status.showUntrackedFiles no' [[ -n "$DOT_ORIGIN" ]] && alias .gclone='git clone --bare "${DOT_ORIGIN}" "${DOT_FILES}"; .g config --local status.showUntrackedFiles no' # if lazygit or gitui are avaiable, we set up a .lazygit and .gitui [[ $(command -v lazygit) ]] && alias .lazygit='lazygit -g ${DOT_FILES}/.dotfiles/ -w ${DOT_HOME}' [[ $(command -v gitui) ]] && alias .gitui='gitui -d ${DOT_FILES}/.dotfiles/ -w ${DOT_HOME}'