nix

configuration files that power my machines
Log | Files | Refs | README | LICENSE

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 }