[user] name = Maxim Likhachev email = envrm@yandex.ru [includeIf "gitdir:~/FILES/Work/"] path = ~/.gitconfig-work [init] defaultBranch = master # WLM [core] # pager = "less -R -X --ignore-case -w --jump-target=.5" pager = delta editor=nvim excludesfile = ~/.shellrc/etc/soft/git/gitignore-global hooksPath = ~/.shellrc/etc/soft/git/hooks/common/ quotepath = false commitGraph = true autocrlf = input safecrlf = warn askpass = [fetch] prune = true [commit] template = ~/.shellrc/etc/soft/git/templates/common/commit.txt [gui] wmstate = normal geometry = 1278x971+1+22 212 188 [color] ui = true [pull] ff = only [merge] conflictstyle = diff3 tool = vimdiff [help] autocorrect = 1 [credential] helper = cache --timeout=3600 [push] default = simple [gc] writeCommitGraph = true [blame] coloring = repeatedLines [color "blame"] repeatedLines = yellow [status] showUntrackedFiles = all # ----[ DIFF METHODS ]-------------------------------------------------------- [diff] renameLimit = 10240 colorMoved = default [diff "plist"] textconv = plutil -p [diff "pdf"] textconv = pdfinfo [diff "png"] textconv = exiftool [diff "jpg"] textconv = exiftool [delta] commit-style = box file-style = box light = true navigate = true syntax-theme = "OneHalfLight" side-by-side = false [interactive] diffFilter = delta --color-only # ----[ ALIASES ]-------------------------------------------------------- [alias] # ----[ COMMON ]-------------------------------------------------------- br = branch #noindex st = status #noindex ss = -c color.status=always status --branch --short #noindex df = diff #noindex wc = diff --stat #noindex # Коммит ci = commit # Коммит с сообщением cm = commit -m # Добавление изменений в последний коммит cmadd = commit --amend --no-edit # Обновить дату последнего коммита cmtouch = commit --amend --no-edit --date=now # Коммит от имени envrm cma = commit --author 'Maxim Likhachev ' -m # Коммит с отображением сохраняемых изменений cv = commit --verbose # Исправление последнего коммита ca = commit --amend # Blame с подсветкой синтаксиса cblame = !git-cblame # Список diff-методов для сохранения в .gitattributes diffs = "!grep '\\[diff \"' ~/.gitconfig | cut -d '\"' -f 2 | awk '{ print \"*.\" $0 \" diff=\" $0 }'" # (c) https://stackoverflow.com/a/70727386 # Список файлов (ls -1) с git-статусом dir = "!lsdir() { ( git status -s -- ':(glob)*'; \\ls -A --file-type | awk '{ print \" \"$0 }' ) | sort -t$'\n' -usk 1.4; }; lsdir" # Список файлов (ls -1) с git-статусом files = dir attributes = diffs #noindex # git push в текущий origin u = "!echo \"# As $(git author)\n# to $(git url)\n\"; echo git push origin $(git rev-parse --abbrev-ref HEAD)" # git force push в текущий origin uf = "!echo \"# \\033[1;31m[ FORCE PUSH ]\\033[00m\n# As $(git author)\n# to $(git url)\n\"; echo git push origin $(git rev-parse --abbrev-ref HEAD) --force-with-lease" # git push во все репозитории up = "!git remote -v | awk '{ print $1 }' | uniq | xargs -IL echo git push L $(git rev-parse --abbrev-ref HEAD)" # Корневая директория репозитория root = rev-parse --show-toplevel # Адрес удалённого репозитория url = !git remote -v | grep fetch | awk '{ print $2 }' # Упаковка репозитория в zip-архив pk = !git archive HEAD --format=zip > `basename $PWD`_`\\date '+%Y.%M.%d'`.zip # Настройка remote на code.envrm.info my-remote = "!remote() { git remote add origin https://code.envrm.info/src/$(basename "$(pwd)").git; }; remote" # Удаление принятых в master веток cleanup = "!git branch --merged | grep -v '\\*\\|master' | xargs -n 1 git branch -d" # ----[ CLONE ]--------------------------------------------------------- # Клонирование репозитория code.envrm.info my = "!git_clone() { git clone https://code.envrm.info/src/${1}.git; }; git_clone" # Клонирование репозитория githube.com hub = "!git_clone() { git clone https://github.com/${1}.git; }; git_clone" # Клонирование репозитория notabug.org nb = "!git_clone() { git clone https://notabug.org/${1}.git; }; git_clone" # ----[ LOGS ]---------------------------------------------------------- # Последний коммит ll = !git --no-pager log -1 HEAD && echo # Краткий список коммитов ls = log --graph --pretty=format:'%Cred%h%Creset - %Cgreen[%cd]%Creset :: %s %C(bold blue)<%an>%Creset%C(yellow)%d%Creset' --abbrev-commit --date=short --color=always # Краткий список коммитов без слияний lss = ls --no-merges # Краткий список коммитов с пиктограммами li = !git lss | sed -E -e 's/Add /📗 /' -e 's/Fix /🐞 /' -e 's/(Improve|Adjust) /⚙️ /' | less # Полный журнал изменений lf = log --source --graph --stat --date=iso --pretty=medium --decorate=full # Список сообщений коммитов, сгруппированных по авторам lm = shortlog -n -e -c # Список коммитов с выводом изменений ld = log --source --stat --date=iso --pretty=medium -p # Локальные изменения, готовые к отправке на сервер lu = !git --no-pager log --left-right --pretty=format:'%C(yellow)%h%Creset - %Cgreen[%cd]%Creset :: %s %C(bold blue)%Creset' --abbrev-commit --graph --color --date=short origin/master...HEAD | nl # Список удалённых файлов deleted = !git log --graph --oneline --diff-filter=D --summary # Журнал действий со ссылками на коммиты refs = reflog show # Список последних действий в ветках last = !git-recent # Вывод дерева слияний tree = ls --all --simplify-by-decoration # Текущий пользователь author = config --get user.email # Текущий пользователь user = config --get user.email # Текущий пользователь whoami = config --get user.email # ----[ EXTRA ]--------------------------------------------------------- # Интерактивный список своих коммитов recall = !git-recall # Список наиболее часто изменяемых файлов top-files = !git-top # Список наиболее активных авторов top-authors = !git shortlog -sn --all --no-merges # Список наиболее активных авторов top-users = !git shortlog -sn --all --no-merges # Список псевдонимов aliases = !git-aliases # Создание графа коммитов graphviz = !git-graphviz # Список форков, отсортированный по дате последнего изменения forks = !git-forks # Получение ignore-шаблонов с https://gitignore.io/ ignore = !git-ignore # Создание gitignore-файла на основе меток +GITIGNORE makeignore = !git-makeignore # Календарь изменений calendar = !git-cal # Информация о репозитории https://github.com/o2sh/onefetch card = !onefetch change-commits = "!f() { VAR=$1; OLD=$2; NEW=$3; shift 3; git filter-branch --env-filter \"if [[ \\\"$`echo $VAR`\\\" = '$OLD' ]]; then export $VAR='$NEW'; fi\" $@; }; f"