From 42aba252cd2da5b11fcc3e6009b0e5285f8c203d Mon Sep 17 00:00:00 2001 From: AnthonyAxenov Date: Sun, 9 Jan 2022 17:02:45 +0800 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20git=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dotfiles/.gitconfig | 103 ++++++++++++++++++++++++-------------------- install/010-git.sh | 3 ++ 2 files changed, 59 insertions(+), 47 deletions(-) diff --git a/dotfiles/.gitconfig b/dotfiles/.gitconfig index ef9d7d3..12b104f 100644 --- a/dotfiles/.gitconfig +++ b/dotfiles/.gitconfig @@ -1,83 +1,92 @@ [user] - name = AnthonyAxenov - email = anthonyaxenov@gmail.com -[push] - default = current + name = AnthonyAxenov + email = anthonyaxenov@gmail.com + signingkey = +[core] + editor = nano + autocrlf = input +[commit] + gpgSign = true +[tag] + gpgSign = true [pull] default = current - rebase = false -[core] - editor = nano - autocrlf = input + rebase = false +[push] + default = current [alias] + # общее ----------------------------------------------------------------- - st = status # aliases = config --get-regexp '^alias' # показать список доступных алиасов - diffc = diff --cached # показать дельту staged-файла - co = checkout # + 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 push origin :"${1}";" # удалить ветку на origin + merged = branch --merged # показать список веток, слитых в текущую + review = "!git fetch origin pull/$1/head:pr/$1 && git checkout pr/$1" # github: встать на PR с указанным id + # удалить локальные ветки, слитые в текущую, плюс все мёртвые ссылки на ветки в origin: + 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 # создание новое ветки - cp = cherry-pick # применить коммит поверх текущего HEAD - bheads = branch -vv # показать список веток с последними коммитами - heads = log --graph --decorate --simplify-by-decoration --oneline # лог только по последним коммитам веток - - # управление ветками ---------------------------------------------------- - br = status -sb # показать название текущей ветки - branch = branch --list # показать текущую ветку в общем списке локальных веток - brd = branch -d # удалить слитую ветку локально - brD = branch -D # удалить НЕслитую ветку локально - brod = "!f(){ git branch -d "${1}"; git push origin :"${1}"; };f" # удалить слитую ветку локально и на origin - broD = "!f(){ git branch -D "${1}"; git push origin :"${1}"; };f" # удалить НЕслитую ветку локально и на origin - merged = branch --merged # показать список слитых веток - # удалить все слитые ветки - #bclean = "!f() { DEFAULT=master; git branch --merged ${1-$DEFAULT} | grep -v " ${1-$DEFAULT}$" | xargs git branch -d; }; f" - mn = merge --no-ff # слить ветку с принудительным коммитом слияния - - # переключение между ветками ---------------------------------------------- - master = "!git checkout master && git pull" # переключиться на ветку master и обновление - dev = "!git checkout dev && git pull" # переключиться на ветку dev и обновление - develop = "!git checkout develop && git pull" # переключиться на ветку develop и обновление + 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 # по-тихому прикрепляет все индексированные файлы к последнему коммиту, используя уже существующее сообщение + amend = commit --amend --no-edit # прикрепляет все индексированные файлы к последнему коммиту, используя уже существующее сообщение + # amenda = commit --amend --no-edit -a amendm = commit --amend -m # прикрепляет все индексированные файлы к последнему коммиту, спрашивает новое сообщение к коммиту + cp = cherry-pick # применить коммит поверх текущего HEAD + diffc = diff --cached # показать дельту staged-файла + uncommit = reset --soft HEAD~1 # управление изменениями, сброс состояний, откат -------------------------- + st = status -sb # короткий status rh = reset --hard # откат коммита с удалением всех изменений на указанный коммит rhh = reset --hard HEAD # откат коммита с удалением всех изменений на последний коммит - rs = reset --soft # откат коммита с сохранением всех изменений на указанный коммит - rsh = reset --soft HEAD # откат коммита с сохранением всех изменений - unstage = reset HEAD # удаляет файл из staged перед коммитом - clear = checkout -- # удаляет изменения в unstaged-файле + 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-репами -------------------------------------------------- - p = push # отправить ветку - po = push origin # отправить ветку в origin - pt = push --tags # отправить теги - pl = pull # получить ветку - plo = pull origin # получить ветку из origin - ploh = pull origin HEAD # получить текущую ветку из origin + pushf = push --force # отправить ветку принудительно + pushft = push --tags --force # отправить теги принудительно + pullf = pull --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 + rpo = remote prune origin # удалить все мёртвые ссылки на ветки в origin + repush = 'git push origin :$1 && git push origin $1' # удалить ветку на origin и отправить её заново # просмотр логов ---------------------------------------------------------- - head = log -1 HEAD # показать последний коммит в текущей ветке + 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 # добавление сабмодуля diff --git a/install/010-git.sh b/install/010-git.sh index 1740d30..db2338c 100755 --- a/install/010-git.sh +++ b/install/010-git.sh @@ -23,4 +23,7 @@ else sudo git clone https://github.com/git/git.git --depth=1 /usr/src/git sudo chown -R anthony: /usr/src/git fi +git config set --global user.name 'AnthonyAxenov' +git config set --global user.email 'anthonyaxenov@gmail.com' git --version +# TODO: cp $DOTFILESDIR/.gitconfig $HOME/.gitconfig