git.zsh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # preferred git shortcuts, not in the git plugin
  2. #compare the provided version of git to the version installed and on path
  3. #prints 1 if input version <= installed version
  4. #prints -1 otherwise
  5. function git_compare_version() {
  6. local INPUT_GIT_VERSION=$1;
  7. local INSTALLED_GIT_VERSION
  8. INPUT_GIT_VERSION=(${(s/./)INPUT_GIT_VERSION});
  9. INSTALLED_GIT_VERSION=($(command git --version 2>/dev/null));
  10. INSTALLED_GIT_VERSION=(${(s/./)INSTALLED_GIT_VERSION[3]});
  11. for i in {1..3}; do
  12. if [[ $INSTALLED_GIT_VERSION[$i] -lt $INPUT_GIT_VERSION[$i] ]]; then
  13. echo -1
  14. return 0
  15. fi
  16. done
  17. echo 1
  18. }
  19. POST_1_8_3_GIT=$(git_compare_version "1.8.3")
  20. unset -f git_compare_version
  21. if [[ $POST_1_8_3_GIT -gt 0 ]]; then
  22. DECO_COLOUR='%C(auto)'
  23. else
  24. DECO_COLOUR='%Cgreen'
  25. fi
  26. GIT_LOG_FORMAT='"format:%C(yellow)%h %Creset%ad %Cblue%an:'$DECO_COLOUR'%d %Creset%s"'
  27. alias ga.='git add -A .'
  28. alias gap='git add -p'
  29. alias gs='git status'
  30. alias gd='git diff'
  31. alias gds='git diff --staged'
  32. alias gcob='git checkout -b'
  33. alias gf='git fetch --all --tags && git fetch --all --prune'
  34. alias gbd='git branch -D'
  35. # standard log with train tracks
  36. alias gl='git log --graph --date=short --pretty='$GIT_LOG_FORMAT
  37. alias gla='gl --all'
  38. # concise, branch and tag log with train tracks (some merge commits unavoidable)
  39. alias glb='gl --simplify-by-decoration'
  40. alias glp='git log --patch'
  41. # useful when you want to have a visual on file changes
  42. alias gls='git log --graph --stat'
  43. # search through history for particular text
  44. alias glS='git log -S'
  45. alias gr='git reset'
  46. alias grh='git reset --hard'
  47. alias grs='git reset --soft'
  48. alias grb='git rebase'
  49. # useful for finding parent commit for a given commit hash
  50. alias gsr='git show --format=raw'
  51. # git submodule management
  52. alias gsm='git submodule'
  53. alias gsmup='git submodule sync && git submodule update --init'
  54. alias gsmpull='git submodule foreach git pull origin master'
  55. # useful if you forget to setup tracking for a new branch when checking out.
  56. alias track='git branch --set-upstream $(current_branch) origin/$(current_branch) && git fetch'
  57. # useful omz git plugin ones include:
  58. # ga, gc, gco, gb, gba, gm, grhh, ggpull, ggpush
  59. #
  60. # ggpull translates into `git pull origin <current branch>`, same for ggpush
  61. #
  62. # Note: both the gg's are extremely convenient! And safe, because you never know
  63. # if tracking has been setup properly on a branch.