From 8de641fd68ff2acd58ea0e83a7551ae1adca97b2 Mon Sep 17 00:00:00 2001 From: AnthonyAxenov Date: Fri, 30 Sep 2022 12:42:52 +0800 Subject: [PATCH] Big update of git aliases (may be a lot of useless trash) --- dotfiles/.git_aliases | 363 +++++++++++++++--------------------------- 1 file changed, 129 insertions(+), 234 deletions(-) diff --git a/dotfiles/.git_aliases b/dotfiles/.git_aliases index f2a3d84..37bf293 100644 --- a/dotfiles/.git_aliases +++ b/dotfiles/.git_aliases @@ -1,157 +1,137 @@ [alias] +# shortcuts ----------------------------------------------------------------- +a = "add" +aa = "add --all" # add all unstaged into index +b = "branch" # +bm = "branch --merged" # branches whose tips are reachable from commit or HEAD +bnm = "branch --no-merged" # branches whose tips are NOT reachable from commit or HEAD +brd = "branch -D" # force delete unmerged branch +brod = "!git branch -D "$1"; git push origin :"$1";" # brd + remove it from origin +bv = "branch -v" # show branch list with those last commits +bvv = "branch -vv" # bv + remote branches tracked by them +c = "commit" +ca = "commit --all" # stage all changes and make a commit (interative) +cam = "commit --all --message" # ca + cm (non-interactive) +cf = "!f() { TARGET=$(git rev-parse \"$1\"); git commit --fixup=$TARGET && GIT_EDITOR=true git rebase --interactive --autosquash $TARGET~; }; f" # https://words.filippo.io/git-fixup-amending-an-older-commit/ +cloner = "clone --recursive" # clone with submodules +cm = "commit --message" # make a commit with message given (non-interactive) +co = "checkout" +cob = "checkout -b" # create new branch with name given +cp = "cherry-pick" +cpa = "cherry-pick --abort" # abort cherry-picking +cpc = "cherry-pick --continue" # continue cherry-picking +cpn = "cherry-pick --no-commit" # cherry-pick without commit +# cpnx = "cherry-pick --no-commit -x" +d = "diff" +dc = "diff --cached" # show diff of staged files +dw = "diff --word-diff" # show word diff in unstaged files +dwc = "diff --word-diff --cached" # dc + dw +f = "fetch" +fa = "fetch --all" # fetch branches from all remotes +l = "log" +lo = "log --oneline" +m = "merge" +ma = "merge --abort" # abort merging +mc = "merge --continue" # continue merging +mn = "merge --no-commit" # merge without commit +p = "pull" +# pr = "!git fetch origin pull/$1/head:pr/$1 && git checkout pr/$1" # github: встать на PR с указанным id +prs = "pull --recurse-submodules" # pull with submodules +r = "remote" +ra = "remote add" +rb = "rebase" +rba = "rebase --abort" +rbc = "rebase --continue" +rbi = "rebase --interactive" +rbs = "rebase --skip" +rp = "remote prune" +rpd = "remote prune --dry-run" +rpo = "remote prune origin" +rpod = "remote prune origin --dry-run" +rs = "remote show" +rso = "remote show origin" +ru = "remote update" +rv = "remote -v" +rv = "revert" +rvn = "revert --no-commit" +s = "status" +sb = "show-branch" +sub = "submodule" +# sa = "submodule add" +# sdi = "submodule deinit -f" +# si = "submodule init" +# ss = "submodule summary" +# sst = "submodule status" +# sup = "submodule update" -#----------------------------------------------------------------- -a = add -aa = add --all - -#----------------------------------------------------------------- -b = branch -bm = branch --merged -bnm = branch --no-merged -bv = branch -v -bvv = branch -vv - -#----------------------------------------------------------------- -c = commit -ci = commit --interactive -ca = commit --all -cm = commit --message -cam = commit --all --message -amend = commit --amend --all --no-edit -amendm = commit --amend --all --message -# https://words.filippo.io/git-fixup-amending-an-older-commit/ -cf = "!f() { TARGET=$(git rev-parse \"$1\"); git commit --fixup=$TARGET && GIT_EDITOR=true git rebase --interactive --autosquash $TARGET~; }; f" - -#----------------------------------------------------------------- -co = checkout -cog = checkout --guess -cob = checkout -b - - - - - -#----------------------------------------------------------------- -cp = cherry-pick -cpa = cherry-pick --abort -cpc = cherry-pick --continue -cpn = cherry-pick --no-commit -# cpnx = cherry-pick --no-commit -x - -#----------------------------------------------------------------- -d = diff -dw = diff --word-diff -dc = diff --cached -ds = diff --staged -dwc = diff --word-diff --cached -dws = diff --word-diff --staged - -#----------------------------------------------------------------- -f = fetch -fa = fetch --all - -#----------------------------------------------------------------- -# g = grep - - -#----------------------------------------------------------------- -l = log -lo = log --oneline - -#----------------------------------------------------------------- -m = merge -ma = merge --abort -mc = merge --continue -mn = merge --no-commit - -#----------------------------------------------------------------- -o = checkout - -#----------------------------------------------------------------- -p = pull --recurse-submodules -clone = clone --recursive - - -#----------------------------------------------------------------- -r = remote -rv = remote -v -ra = remote add -ru = remote update -rs = remote show -rso = remote show origin -rp = remote prune -rpo = remote prune origin -rpd = remote prune --dry-run -rpod = remote prune origin --dry-run - -#----------------------------------------------------------------- -rv = revert -rvn = revert --no-commit - -#----------------------------------------------------------------- -rb = rebase -rba = rebase --abort -rbc = rebase --continue -rbs = rebase --skip -rbi = rebase --interactive - -#----------------------------------------------------------------- -s = status - -#----------------------------------------------------------------- -sb = show-branch - -#----------------------------------------------------------------- -sub = submodule -# si = submodule init -# sdi = submodule deinit -f -# sa = submodule add -# sup = submodule update -# sst = submodule status -# ss = submodule summary - - -#----------------------------------------------------------------- -master = "!git checkout master && git pull" -main = "!git checkout main && git pull" -dev = "!git checkout dev && git pull" -develop = "!git checkout develop && git pull" - -#----------------------------------------------------------------- -user = config --local --get-regexp '^user' # локальные настройки пользователя git -guser = config --global --get-regexp '^user' # глобальные настройки пользователя git -# whoami = user -# gwhoami = guser - -#----------------------------------------------------------------- -contributors = shortlog --summary --numbered --no-merges -archive = !"f() { top=$(rev-parse --show-toplevel); cd $top; tar cvf $top.tar $top ; }; f" -default-branch = config init.defaultBranch -panic = "!git checkout $(git default-branch) && git fetch origin --prune && git reset --hard origin/$(git default-branch) && git clean -ffd" -uncommit = reset --soft HEAD~1 -unadd = reset HEAD -discard = checkout -- -cleaner = clean -dff -cleanest = clean -dffx -cleanout = !git clean -df && git checkout -- . -publish = "!git push --set-upstream origin $(git current-branch)" -inbound = "!git remote update --prune; git log ..@{upstream}" -outbound = log @{upstream}.. -aliases = "!git config --get-regexp '^alias\\.' | cut -c 7- | sed 's/ / = /'" -branches = branch -a -tags = tag -n1 --list -stashes = stash list -current-branch = git branch --show-current #rev-parse --abbrev-ref HEAD -upstream-branch = !git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD) +# subcommands ----------------------------------------------------------------- +# gwhoami = "guser" +# whoami = "user" +# ploh = "pull origin HEAD" # получить текущую ветку из origin +# sy = "remote update origin --prune" +aliases = "config --get-regexp '^alias'" # show all aliases +amend = "commit --amend --all --no-edit" # add new changes into last commit +amendm = "commit --amend --all --message" # amend + edit commit message +archive = !"f() { top=$(rev-parse --show-toplevel); cd $top; tar cvzf $top.tar.gz $top ; }; f" # make repo .tar.gz +branches = "branch -a" +branches = "bvv" +cleaner = "clean -dff" +cleanest = "clean -dffx" +cleanout = "!git clean -df && git checkout -- ." +clear = "checkout --" # удаляет изменения в файле +contributors = "shortlog --summary --numbered --no-merges" # users participating in development +current-branch = "branch --show-current" #rev-parse --abbrev-ref HEAD +default-branch = "config init.defaultBranch" # get default branch name +dehead = "!BR=$(git branch --show-current); if [ -n "$BR" ]; then echo $BR; else git describe --contains --all HEAD; fi;" +dev = "!git checkout dev && git pull" # quick switch on dev branch and update it +develop = "!git checkout develop && git pull" # quick switch on develop branch and update it +discard = "checkout --" exec = "!exec" -pruner = "!git prune --expire=now; git reflog expire --expire-unreachable=now --rewrite --all" -repacker = repack -a -d -f --depth=300 --window=300 --window-memory=1g +fuck = "!git checkout $(git default-branch) && git fetch origin --prune && git reset --hard origin/$(git default-branch) && git clean -ffd" +guser = "config --global --get-regexp '^user'" # show global user settings +; last-tag = "describe --tags --abbrev=0" +; last-tagged = "!git describe --tags $(git rev-list --tags --max-count=1)" +main = "!git checkout main && git pull" # quick switch on main branch and update it +master = "!git checkout master && git pull" # quick switch on master branch and update it +merged = "bm" optimizer = "!git pruner; git repacker; git prune-packed" -last-tag = describe --tags --abbrev=0 -last-tagged = "!git describe --tags $(git rev-list --tags --max-count=1)" -orphans = fsck --full +orphans = "fsck --full" +pruner = "!git prune --expire=now; git reflog expire --expire-unreachable=now --rewrite --all" +publish = "!git push --set-upstream origin $(git current-branch)" +pullf = "pull --force" # получить ветку принудительно +pullft = "pull --tags --force" # получить теги +pullt = "pull --tags" # получить теги +pushf = "push --force" # отправить ветку принудительно +pushft = "push --tags --force" # отправить теги принудительно +pusht = "push --tags" # отправить теги +remotes = "remote -v" # показать список удалённых репозиториев +repacker = "repack -a -d -f --depth=300 --window=300 --window-memory=1g" +repush = "git push origin :$1 && git push origin $1'" # замена push --force +rh = "reset --hard" # откат коммита с удалением всех изменений на указанный коммит +rhh = "reset --hard HEAD" # откат коммита с удалением всех изменений на последний коммит +rmh = "reset --mixed HEAD" # откат коммита с сохранением всех изменений +rpo = "remote prune origin" # удалить все мёртвые ссылки на bare-ветки origin +rso = "remote show origin" # показать состояние локальных веток относительно удалённых на origin bare +stashes = "stash list" # show stashed changes +tags = "tag -n1 --list" # shot tag names and commit message +# remove branches merged into specified or default one and clear dead links to remote branches +trim = "!DEFAULT=$(git default-branch); git branch --merged ${1-$DEFAULT} | grep -v " ${1-$DEFAULT}$" | xargs git branch -d; git remote prune origin;" +uncommit = "reset --soft HEAD~1" +unstage = "reset HEAD" # staged file => unstaged +#unwip = "reset --mixed HEAD~" +upstream-branch = "!git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)" +user = "config --local --get-regexp '^user'" # show local user settings (in current repo) +wip = "commit -am 'WIP'" +wipa = "commit --amend -am 'WIP'" +head = "log -1 HEAD" # показать последний коммит в текущей ветке +heads = "log --graph --decorate --simplify-by-decoration --oneline" # show last commit of each branch as tree graph +log-all = "log --graph --decorate --all" +log-small = "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'" log-my = "!git log --author $(git config user.email)" -log-compact1 = log --graph --topo-order --date=short --abbrev-commit --decorate --all --boundary --pretty=format:'%Cgreen%ad %Cred%h%Creset -%C(yellow)%d%Creset %s %Cblue[%cn]%Creset %Cblue%G?%Creset' +inbound = "!git remote update --prune; git log ..@{upstream}" # get +outbound = "log @{upstream}.." + + chart = "!f() { \ git log \ --format=oneline \ @@ -188,88 +168,3 @@ chart = "!f() { \ } \ }'; \ }; f" - - - - - - - -# # общее ----------------------------------------------------------------- -# init = init -q # no blm! -# aliases = config --get-regexp '^alias' # показать список доступных алиасов -# user = config --local --get-regexp '^user' # локальные настройки пользователя git -# guser = config --global --get-regexp '^user' # глобальные настройки пользователя git -# user-me = "git config user.name 'Anthony Axenov'; git config user.email 'anthonyaxenov@gmail.com'; git config user.signingkey 'F7CCD4EC'" -# user-bars = "git config user.name 'Антон Аксенов'; git config user.email 'a.aksenov@bars.group'; git config user.signingkey '45C3E670'" - -# # ветки ------------------------------------------------------------------- -# bheads = branch -vv # ветки и их последние коммиты -# branches = branch --list -vv # показать текущую ветку в общем списке локальных веток -# # br = status -sb # показать название текущей ветки -# 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 -a # прикрепляет все индексированные файлы к последнему коммиту, используя уже существующее сообщение -# #amenda = commit --amend --no-edit -# amendm = commit --amend -m # прикрепляет все индексированные файлы к последнему коммиту, спрашивает новое сообщение к коммиту -# cp = cherry-pick # применить коммит поверх текущего HEAD -# diffc = diff --cached # показать дельту staged-файла - -# # управление изменениями, сброс состояний, откат -------------------------- -# # st = status -sb # короткий status -# st = status # сокращение -# rh = reset --hard # откат коммита с удалением всех изменений на указанный коммит -# rhh = reset --hard HEAD # откат коммита с удалением всех изменений на последний коммит -# rmh = reset --mixed HEAD # откат коммита с сохранением всех изменений -# unstage = reset HEAD # переводит файл staged => unstaged без потери изменений -# clear = checkout -- # удаляет изменения в файле - -# # алиасы для временной фиксации -# # на самом деле, для таких дел надо использовать git stash -# # save = !git add -A && git commit -m 'SAVEPOINT' -# wip = commit -am "WIP" -# wipa = commit --amend -am "WIP" -# undo = reset --mixed HEAD~ - -# # работа с remote-репами -------------------------------------------------- -# pushf = push --force # отправить ветку принудительно -# pusht = push --tags # отправить теги -# pushft = push --tags --force # отправить теги принудительно -# pullf = pull --force # получить ветку принудительно -# pullt = pull --tags # получить теги -# pullft = 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' # замена push --force - -# # просмотр логов ---------------------------------------------------------- -# head = log -1 HEAD # показать последний коммит в текущей ветке -# heads = log --graph --decorate --simplify-by-decoration --oneline # коммиты, которыми оканчиваются ветки -# # название текущей ветки или тега при detached head: -# dehead = "!BR=$(git branch --show-current); if [ -n \"$BR\" ]; then echo $BR; else git describe --contains --all HEAD; fi;" -# 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' - -# # сабмодули ---------------------------------------------------------------