git (2363B)
1 #!/bin/sh 2 alias cdg='cd "$(git rev-parse --show-toplevel)"' 3 alias gst='git status' 4 5 alias ng='nvim -c ":Neogit"' 6 7 alias gprl='git-prole' 8 alias gprla='git-prole add' 9 alias gprlc='git-prole convert' 10 11 alias gn='git number --column' 12 alias ga='git number add' 13 alias gc='git commit -v' 14 alias gcp='git cherry-pick --strategy=recursive --strategy-option=diff-algorithm=histogram' 15 alias gd='git diff --no-prefix' 16 alias gl='git gol' 17 alias gm='git merge' 18 alias gmc='gm --no-ff' 19 alias gp='git push' 20 alias gs='git show --no-prefix' 21 alias gref='git reflog --date=iso' 22 23 alias grr='git rebase -r' 24 alias gri='grr -i' 25 alias grrm='grr master@{u}' 26 alias gru='grr @{u}' 27 alias gabs='git absorb --and-rebase' 28 29 alias gdm='git_diff_merge_base master@{u}' 30 alias gdma='git_diff_merge_base main@{u}' 31 alias gdd='git_diff_merge_base develop@{u}' 32 alias gdu='gd @{u}..' 33 alias gdc='gd --cached' 34 alias gdw='gd --color-words' 35 36 alias ghr='git history reword' 37 alias ghs='git history split' 38 39 alias gco='git checkout' 40 alias gsw='git switch' 41 42 # Logs 43 alias glm='gl master@{u}..' 44 alias glma='gl main@{u}..' 45 alias glu='gl @{u}..' 46 47 # Misc 48 alias gap='ga -p' 49 alias gca='gc -a' 50 alias gcaa='gca --amend' 51 alias grh='git reset --hard' 52 alias grhu='grh @{u}' 53 alias gpf='gp -f' 54 alias gu='gf && grrm' 55 alias gcl='git clean -dffx' 56 57 # Functions 58 git_diff_merge_base() { 59 feature="${2:-HEAD}" 60 gd "$(git merge-base "$1" "$feature")..$feature" 61 } 62 63 gcm() { 64 git "${1?}" "${2?}" 65 } 66 67 gf() { 68 if [ "$1" ]; then 69 git fetch -p "$1" 70 else 71 git fetch -p --all 72 fi 73 } 74 75 gcopr() { 76 git fetch origin pull/"${1?need pr num}"/head:pr"$1" && gco pr"$1" 77 } 78 79 glf() { 80 commit=$( 81 git log \ 82 --color=always \ 83 --date=short \ 84 --pretty=format:'%h|%C(auto)%d %s %C(green)%cr %C(bold cyan)<%an>' "$@" | 85 fzf \ 86 --ansi \ 87 --delimiter='|' \ 88 --preview 'git show --color=always {1}' | 89 cut -d'|' -f1 | tr -d '[:space:]' 90 ) 91 92 if [ -n "$commit" ]; then 93 nvim -c ":DiffviewOpen $commit" 94 fi 95 } 96 97 gb() { 98 if [ "$#" -gt 0 ]; then 99 git branch "$@" 100 return 101 fi 102 103 branch=$( 104 git for-each-ref --sort=-committerdate --format='%(refname:short)' refs/heads refs/remotes | 105 grep -v HEAD | 106 sed 's|^origin/||' | 107 awk '!seen[$0]++' | 108 fzf \ 109 --height=40% \ 110 --reverse \ 111 --preview 'git log --oneline --color=always {1} 2>/dev/null | head -20' \ 112 --preview-window=right:50% 113 ) 114 [ -n "$branch" ] && gco "${branch#origin/}" 115 }