From 31d284f0dac913fa99e1dbe15207d9ad084d626e Mon Sep 17 00:00:00 2001 From: AnthonyAxenov Date: Tue, 11 Jan 2022 08:16:27 +0800 Subject: [PATCH] .gitconfig --- cfg/.gitconfig | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 cfg/.gitconfig diff --git a/cfg/.gitconfig b/cfg/.gitconfig new file mode 100644 index 0000000..ce66fdd --- /dev/null +++ b/cfg/.gitconfig @@ -0,0 +1,88 @@ +# https://gist.github.com/anthonyaxenov/020b25ea53701d82902a7acfb557866c +# ...прочие настройки +[core] + editor = nano + autocrlf = input +[pull] + default = current + rebase = false +[push] + default = current +[alias] + + # общее ----------------------------------------------------------------- + aliases = config --get-regexp '^alias' # показать список доступных алиасов + head = log -1 HEAD # показать последний коммит в текущей ветке + # название текущей ветки или тега при detached head: + dehead = "!BR=$(git branch --show-current); if [ -n \"$BR\" ]; then echo $BR; else git describe --contains --all HEAD; fi;" + + # ветки ------------------------------------------------------------------- + bheads = branch -vv # ветки и их последние коммиты + # br = status -sb # показать название текущей ветки + # branch = branch --list -vv # показать текущую ветку в общем списке локальных веток + #mn = merge --no-ff # слить ветку с принудительным коммитом слияния + brd = branch -D # удалить ветку локально + brod = "!git branch -D "${1}"; git push origin :"${1}";" # удалить ветку локально и на origin + merged = branch --merged # показать список веток, слитых в текущую + ghpr = "!git fetch origin pull/$1/head:pr/$1 && git checkout pr/$1" # github: встать на PR с указанным id + # удалить локальные ветки, слитые в текущую: + trim = "!DEFAULT=master; git branch --merged ${1-$DEFAULT} | grep -v " ${1-$DEFAULT}$" | xargs git branch -d; git remote prune origin;" + + # переключение ------------------------------------------------------------ + co = checkout # переключиться на ветку/тег/коммит + cob = checkout -b # создание новое ветки + master = "!git checkout master && git pull" # переключиться на ветку master и обновить + dev = "!git checkout dev && git pull" # переключиться на ветку dev и обновить + develop = "!git checkout develop && git pull" # переключиться на ветку develop и обновить + + # фиксация изменений ------------------------------------------------------ + c = commit # коммит + ca = commit -a # коммит всех файлов + cm = commit -m # коммит с заданным сообщением + cam = commit -am # коммит всех файлов с заданным сообщением + amend = commit --amend --no-edit # прикрепляет все индексированные файлы к последнему коммиту, используя уже существующее сообщение + # amenda = commit --amend --no-edit -a + amendm = commit --amend -m # прикрепляет все индексированные файлы к последнему коммиту, спрашивает новое сообщение к коммиту + cp = cherry-pick # применить коммит поверх текущего HEAD + diffc = diff --cached # показать дельту staged-файла + + # управление изменениями, сброс состояний, откат -------------------------- + st = status -sb # короткий status + rh = reset --hard # откат коммита с удалением всех изменений на указанный коммит + rhh = reset --hard HEAD # откат коммита с удалением всех изменений на последний коммит + reseth = reset --mixed HEAD # откат коммита с сохранением всех изменений + unstage = reset HEAD # переводит файл staged => unstaged без потери изменений + clear = checkout -- # удаляет изменения в файле + + # алиасы для временной фиксации + # на самом деле, для таких дел надо использовать git stash + # save = !git add -A && git commit -m 'SAVEPOINT' + # wip = commit -am "WIP" + # undo = reset HEAD~1 --mixed + + # работа с remote-репами -------------------------------------------------- + pushf = push --force # отправить ветку принудительно + pusht = push --tags # отправить теги + pushft = push --tags --force # отправить теги принудительно + pullt = pull --tags --force # получить теги + ploh = pull origin HEAD # получить текущую ветку из origin + remotes = remote -v # показать список удалённых репозиториев + #sy = remote update origin --prune # + rso = remote show origin # показать состояние локальных веток относительно удалённых на origin bare + rpo = remote prune origin # удалить все мёртвые ссылки на bare-ветки origin + repush = 'git push origin :$1 && git push origin $1' + + # просмотр логов ---------------------------------------------------------- + heads = log --graph --decorate --simplify-by-decoration --oneline # коммиты, которыми оканчиваются ветки + tree = log --graph --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(white)- %an, %ar%Creset' + hist = log --pretty=format:\"%h | %an (%ad) %s%d\" --graph --date=relative + logfull = log --graph --decorate --all + grog = log --graph --decorate --all --pretty=format:'%C(bold red)%h%C(reset) %C(bold blue)%an%C(reset) %C(green)%cr%C(reset) [%aD]%d%n%B' + + # сабмодули --------------------------------------------------------------- + si = submodule init # инициализация сабмодулей + sdi = submodule deinit -f # удаление сабмодуля + sa = submodule add # добавление сабмодуля + sup = submodule update # обновление сабмодуля + sst = submodule status # статус сабмодулей + ss = submodule summary # список сабмодулей \ No newline at end of file