#!/bin/bash function git_remote { echo "Running: git remote add origin ${GIT_HOSTING}:$1.git" git remote add origin $GIT_HOSTING:$1.git } function git_first_push { echo "Running: git push origin master:refs/heads/master" git push origin master:refs/heads/master } function git_remove_missing_files() { git ls-files -d -z | xargs -0 git update-index --remove } # Adds files to git's exclude file (same as .gitignore) function local-ignore() { echo "$1" >> .git/info/exclude } # get a quick overview for your git repo function git_info() { if [ -n "$(git symbolic-ref HEAD 2> /dev/null)" ]; then # print informations echo "git repo overview" echo "-----------------" echo # print all remotes and thier details for remote in $(git remote show); do echo $remote: git remote show $remote echo done # print status of working repo echo "status:" if [ -n "$(git status -s 2> /dev/null)" ]; then git status -s else echo "working directory is clean" fi # print at least 5 last log entries echo echo "log:" git log -5 --oneline echo else echo "you're currently not in a git repository" fi } function git_stats { # awesome work from https://github.com/esc/git-stats # including some modifications if [ -n "$(git symbolic-ref HEAD 2> /dev/null)" ]; then echo "Number of commits per author:" git --no-pager shortlog -sn --all AUTHORS=$( git shortlog -sn --all | cut -f2 | cut -f1 -d' ') LOGOPTS="" if [ "$1" == '-w' ]; then LOGOPTS="$LOGOPTS -w" shift fi if [ "$1" == '-M' ]; then LOGOPTS="$LOGOPTS -M" shift fi if [ "$1" == '-C' ]; then LOGOPTS="$LOGOPTS -C --find-copies-harder" shift fi for a in $AUTHORS do echo '-------------------' echo "Statistics for: $a" echo -n "Number of files changed: " git log $LOGOPTS --all --numstat --format="%n" --author=$a | cut -f3 | sort -iu | wc -l echo -n "Number of lines added: " git log $LOGOPTS --all --numstat --format="%n" --author=$a | cut -f1 | awk '{s+=$1} END {print s}' echo -n "Number of lines deleted: " git log $LOGOPTS --all --numstat --format="%n" --author=$a | cut -f2 | awk '{s+=$1} END {print s}' echo -n "Number of merges: " git log $LOGOPTS --all --merges --author=$a | grep -c '^commit' done else echo "you're currently not in a git repository" fi }