1 # AX-ZSH: Alex' Modular ZSH Configuration
4 # Make sure that "git(1)" is installed
5 (( $+commands[git] )) || return
11 '--ignore-submodules=dirty'
12 #'--untracked-files=no'
14 [[ -n "$(git status $flags 2>/dev/null | tail -n1)" ]] \
15 && echo "$ZSH_THEME_VCS_PROMPT_DIRTY" \
16 || echo "$ZSH_THEME_VCS_PROMPT_CLEAN"
19 git_current_branch() {
20 local ref=$(git symbolic-ref --quiet HEAD 2>/dev/null)
22 if [[ $ret != 0 ]]; then
23 [[ $ret == 128 ]] && return # No Git repository
24 ref=$(git rev-parse --short HEAD 2>/dev/null) || return
26 echo "${ref#refs/heads/}"
30 [[ -n "$(git rev-list "@{upstream}..HEAD" 2>/dev/null)" ]] \
31 && echo "$ZSH_THEME_VCS_PROMPT_AHEAD"
35 [[ -n "$(git rev-list HEAD..@{upstream} 2>/dev/null)" ]] \
36 && echo "$ZSH_THEME_VCS_PROMPT_BEHIND"
40 local ref=$(git symbolic-ref HEAD 2>/dev/null) || return 1
41 [[ -n "$ref" ]] || return 1
42 echo "${ZSH_THEME_VCS_PROMPT_PREFIX}${ref#refs/heads/}${ZSH_THEME_VCS_PROMPT_SUFFIX}"
45 local ref=$(git symbolic-ref HEAD 2>/dev/null) || return 1
46 [[ -n "$ref" ]] || return 1
47 echo "$(git_parse_dirty)$(git_prompt_ahead)$(git_prompt_behind)"
51 local prompt=$(git_prompt_info)
52 [[ -n "$prompt" ]] || return 1
53 echo "$prompt$(git_prompt_status)"
57 # OhMyZsh compatibility functions
58 alias parse_git_dirty=git_parse_dirty
60 axzsh_vcs_prompt_functions=($axzsh_vcs_prompt_functions git_prompt)
62 alias fix="git diff --name-only | uniq | xargs $EDITOR"
65 alias gapa="git add --patch"
66 alias gc="git commit --verbose"
67 alias gc!="git commit --verbose --amend"
68 alias gca="git commit --verbose --all"
69 alias gcam="git commit --verbose --all --message"
70 alias gcmsg="git commit --verbose --message"
71 alias gcn="git commit --verbose --no-edit"
72 alias gcn!="git commit --verbose --no-edit --amend"
73 alias gco="git checkout"
75 alias gdca="git diff --cached"
76 alias gdcw="git diff --cached --word-diff"
77 alias gdw="git diff --word-diff"
79 alias gfa="git fetch --all --prune"
80 alias gfo="git fetch origin"
82 alias glo="git log --oneline --decorate"
83 alias gloo="git log --oneline --decorate ORIG_HEAD.."
86 alias grb="git rebase"
87 alias grbi="git rebase --interactive"
88 alias gsb="git status --short --branch"
90 alias gss="git status --short"
91 alias gst="git status"
92 alias gsta="git stash push"
93 alias gstl="git stash list"
94 alias gstp="git stash pop"