Big update of git aliases (may be a lot of useless trash)

This commit is contained in:
Anthony Axenov 2022-09-30 12:42:52 +08:00
parent 32bdf4b44d
commit 8de641fd68
Signed by: anthony
GPG Key ID: EA9EC32FF7CCD4EC

View File

@ -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'
# # сабмодули ---------------------------------------------------------------