git 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #!/bin/bash
  2. alias ga=' git add'
  3. alias gaa=' git add -A'
  4. alias gau=' git add -u'
  5. alias gba=' git branch -a'
  6. alias gbak='git commit -m "BAK ##$(date +"%Y-%m-%dT%T%z")"'
  7. alias gcc=' git checkout -- .'
  8. alias gd=' git diff'
  9. alias gdt=' git difftool --dir-diff'
  10. alias gex=' rm -Rfv .git ; git init ; git add -A'
  11. alias gfak='git pull ; git add -u ; git commit -m "BAK ##$(date +"%Y-%m-%dT%T%z")" ; git push'
  12. alias gg=' git log --graph --decorate --oneline --no-abbrev-commit'
  13. alias ghr=' ls -1A | grep -vE .git$ | xargs -rI{} rm -Rf '{}' && git checkout -- .'
  14. alias gl=' git log'
  15. alias gpp=' git pull ; git push'
  16. alias gs=' git status'
  17. function gall(){
  18. if [ "${2}" == "" ]; then
  19. find . -type d | sort -u | grep -E "\.git$" | sed "s|\/\.git||" | sed "s|^\.|$PWD|" | xargs -I{} bash -c "cd {} ; echo '"'>>>>>>>>>> {}'"' ; ${1}"
  20. else
  21. find . -type d | sort -u | grep -E "\.git$" | grep -Ei "${2}" | sed "s|\/\.git||" | sed "s|^\.|$PWD|" | xargs -I{} bash -c "cd {} ; echo '"'>>>>>>>>>> {}'"' ; ${1}"
  22. fi
  23. }
  24. function gcuab(){
  25. local cb=$(git branch --show-current)
  26. while read -r line; do
  27. git checkout "${line}"
  28. git pull
  29. if [ "${1}" == '--crawler' ]; then
  30. find -L . -type f -not -path '*/.git*' | \
  31. xargs -rI{} grep -EH '^' '{}' >../$(pwd | \
  32. sed -E "s|.*/(.*)|\1_${line}_allCnt\.txt|g")
  33. fi
  34. done < <(git branch -a | grep -F 'remotes' | sed -E 's|(^[ ]*remotes/origin/)||g' | cut -d ' ' -f 1)
  35. git checkout "${cb}"
  36. }
  37. function gbswitch(){
  38. while read -r line; do
  39. git checkout "${line}"
  40. git pull
  41. done < <(git branch -a | grep -F 'remotes' | sed -E 's|(^[ ]*remotes/origin/)||g' | cut -d ' ' -f 1 | fzf)
  42. }
  43. function gmm(){
  44. local cb=$(git branch --show-current)
  45. local mst=$(git branch | grep -E 'main|master' | tr -s ' ' | cut -d ' ' -f 2)
  46. git checkout "${mst}"
  47. git pull
  48. git checkout "${cb}"
  49. git merge "${mst}"
  50. }
  51. function gh(){
  52. local opts=$(cat << EOF
  53. add :q: . ______________
  54. add_adoc :q: find | grep -E \.adoc$ | xargs -rI{} git add '{}'
  55. branch :q: . ______________
  56. branch_byRepo_local :q: echo "${1}" | xargs -rI{} bash -c "git checkout -b '{}' ; git push --set-upstream origin '{}'"
  57. branch_remaster :q: cd ../master ; git pull ; git fetch --prune ; cd ../head ; rm -Rf .git ; cp -R ../master/.git .
  58. branch_setupstream :q: git push --set-upstream origin $(git branch --show-current)
  59. log :q: . ______________
  60. log_branch :q: git --no-pager log --name-status >../$(pwd | sed -E 's|.*/(.*)|\1_git\.log|g')
  61. log_hist :q: git clone $(if [ -f 'repo.url' ]; then cat repo.url | grep -Ev '^##.*' ; fi) work ; cd work ; git checkout "${1}" ; git --no-pager log | grep -E "^commit " | sed -E "s|commit ||g" | xargs -rI{} bash -c 'git checkout "{}" ; find -L . -type f -not -path "*/.terraform*" -not -path "*/.git*" | xargs -rI{} file "{}" | grep -E "ASCII|text" | cut -d ":" -f 1 | sort -u --version-sort | xargs -rI@ grep -EH "^" "@" >"../\$(git log "{}" -n 1 --pretty=format:%cd --date=format:"%Y%m%d_%H%M%S")__{}.txt"'
  62. log_hist_nmbr :q: git clone $(if [ -f 'repo.url' ]; then cat repo.url | grep -Ev '^##.*' ; fi) work ; cd work ; git checkout "${1}" ; git --no-pager log | grep -E "^commit " | sed -E "s|commit ||g" | xargs -rI{} bash -c 'git checkout "{}" ; find -L . -type f -not -path "*/.terraform*" -not -path "*/.git*" | xargs -rI{} file "{}" | grep -E "ASCII|text" | cut -d ":" -f 1 | sort -u --version-sort | xargs -rI@ grep -EHn "^" "@" >"../\$(git log "{}" -n 1 --pretty=format:%cd --date=format:"%Y%m%d_%H%M%S")__{}.txt"'
  63. meta :q: . ______________
  64. meta_info :q: echo -e "GIT_REPO:\t$(git config --get remote.origin.url)" && echo -e "CURRENT BRANCH:\t$(git branch --show-current)" && echo -e "LOG_INFO:\t$(git log --pretty=format:'%H [%cN] %aI %s' -n 1)"
  65. meta_origin :q: git config --get remote.origin.url
  66. ## purge :q: . ______________
  67. purge :q: find -type f | grep -F 'repo.url' | sed -E 's|(.*/).*|\1|g' | xargs -rI{} bash -c 'cd '{}' ; ls -1 | grep -vE "repo\.url|setup\.sh|froozen" | xargs rm -Rf ; git clone \$(if [ -f 'repo.url' ]; then cat repo.url | grep -vE '^#'; fi) head ; cp -R head master ; cd head ; git --no-pager log --name-status >../\$(pwd | sed -E "s|.*/(.*)|\1_git\.log|g") ; find -L . -type f -not -path '*/node_modules*' -not -path '*/.git*' | xargs -rI{} file "{}" | grep ASCII | cut -d ":" -f 1 | sort -u --version-sort | xargs -rI{} grep -EH '^' '{}' >../\$(pwd | sed -E "s|.*/(.*)|\1_allCnt\.txt|g") '
  68. freeze :q: cp -R head froozen
  69. twins :q: . ______________
  70. twins_addRepo :q: find -type f | grep -E 'setup\.sh|repo.url' | grep -Ev '/\bhist\b/' | xargs -rI{} git add -f '{}'
  71. twins_purge :q: rm -Rf * ; git checkout -- . ; find -type f | grep -F 'repo.url' | sed -E 's|(.*/).*|\1|g' | xargs -rI{} bash -c 'cd '{}' ; ls -1 | grep -vE "repo\.url|setup\.sh" | xargs rm -Rf ; git clone \$(if [ -f 'repo.url' ]; then cat repo.url; fi) head ; cp -R head master ; cd head ; git --no-pager log --name-status >../\$(pwd | sed -E "s|.*/(.*)|\1_git\.log|g") ; find -L . -type f -not -path '*/.terraform*' -not -path '*/.git*' | xargs -rI{} file "{}" | grep ASCII | cut -d ":" -f 1 | sort -u --version-sort | xargs -rI{} grep -EH '^' '{}' >../\$(pwd | sed -E "s|.*/(.*)|\1_allCnt\.txt|g") '
  72. twins_forceAllFiles :q: find -L . -type f -not -path '*/.terraform*' -not -path '*/.git*' | xargs -rI{} git add -f '{}'
  73. EOF
  74. )
  75. local selOpt=$(echo "${opts}" | grep -vE '^##' | nl -i1 -n'rz' -v0 -w3 | sort -ru | fzf)
  76. if [ "${selOpt}" == "" ]; then
  77. echo ">>>>>>> nothing selected, cancel ..."
  78. return
  79. fi
  80. mode=$( echo "${selOpt}" | sed -E 's/(^.*)([ ]*)(:[a-z]?:)([ ]*)(.*$)/\3/g' )
  81. selOpt=$( echo "${selOpt}" | sed -E 's/(^.*)([ ]*)(:[a-z]?:)([ ]*)(.*$)/\5/g' )
  82. case $mode in
  83. ":q:")
  84. echo ">>>>>>> ${selOpt}"
  85. history -s "${selOpt}"
  86. eval "${selOpt}"
  87. ;;
  88. *)
  89. echo ">>>>>>> ${selOpt} '$@'"
  90. history -s "${selOpt} '$@'"
  91. history -s "gh '$@'"
  92. eval "${selOpt} '$@'"
  93. ;;
  94. esac
  95. }
  96. function lrepo(){
  97. local LCMODULES_DIR="${HOME}/lcmodules_local/head"
  98. local selOpt=$(find "${LCMODULES_DIR}" -not -path '*/.git*' | grep -E '/HEAD$' | sed -E "s|(${LCMODULES_DIR}/)(.*)/HEAD|\2|g" | sed -E 's|(.*)| :: \1|g' | grep -Ei "$(echo "$@" | tr -s ' ' | sed -E 's| |\||g')" | nl -i1 -n'rz' -v0 -w3 | sort -ru | fzf)
  99. if [ "${selOpt}" == "" ]; then
  100. echo ">>>>>>> nothing selected, cancel ..."
  101. return
  102. fi
  103. selOpt=$( echo "${selOpt}" | sed -E 's/(^.*)[ ]*::[ ]*(.*$)/\2/g' )
  104. read -p "options ('p'lain/'s'ub): " a;
  105. case $a in
  106. "s")
  107. sub=$(echo "${selOpt}" | sed -E "s|.*/(.*)|\1|g")
  108. mkdir -p "${sub}" ; cd "${sub}"
  109. ;;
  110. "p")
  111. ;;
  112. *)
  113. echo "-- Nothing to do --"
  114. return
  115. ;;
  116. esac
  117. selOpt="git init ; git remote add origin file://${LCMODULES_DIR}/$selOpt ; git fetch ; git reset origin/master ; git checkout master ; git push --set-upstream origin master"
  118. echo ">>>>>>> ${selOpt}"
  119. history -s "${selOpt}"
  120. eval "${selOpt}"
  121. }