profile-git 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. git-ignore() {
  2. local site="https://raw.githubusercontent.com/github/gitignore/master"
  3. if [[ $1 == "--global" ]]; then
  4. shift
  5. ignore_file=${HOME}/.gitignore_global
  6. site+="/Global"
  7. else
  8. ignore_file="./.gitignore"
  9. fi
  10. wget -qO- "${site}/${1}.gitignore" >> "${ignore_file}"
  11. }
  12. git-inject-clang-format() {
  13. local fromdir todir
  14. fromdir=${HOME}/.dotfiles/resources
  15. todir=.git/hooks
  16. mkdir -p "${todir}/pre-commit.d"
  17. git config hooks.clangformat.style file
  18. cp ${fromdir}/clang-format.template ./.clang-format
  19. cp ${fromdir}/pre-commit-all.hook ${todir}/pre-commit
  20. cp ${fromdir}/clang-format.hook ${todir}/pre-commit.d/clang-format
  21. }
  22. git-create() {
  23. mkcd "${1}"; shift
  24. git init
  25. touch .gitignore
  26. local message="Initializing repository"
  27. if [[ $# -ge 1 ]]; then
  28. for i in "$@"; do git-ignore "${i}"; done
  29. message+=" with ignore lists: [ $1"
  30. [[ $# -eq 1 ]] || message+="$(printf ", %s" "${@:2}")"
  31. message+=" ]"
  32. fi
  33. maybe_do git-ignore-local
  34. git add .gitignore
  35. git commit -m "${message}"
  36. }
  37. alias git-graph="git log --graph --pretty=oneline --abbrev-commit --decorate --all"
  38. alias git-cleanup='git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d'