git up и все все все

от автора

Комманда git up (аналог svn up) добавляется так:

git config --global alias.up '!(git add . && git stash && git pull --rebase >&2) | grep -v "No local changes to save" && git stash pop' 

git up при надобности ныкает все ещё незакоммиченные изменения в stash, обновляет локальную ветку до свежайшей и восстанавливает локальные изменения назад. В том числе переносит ещё неотправленные локальные коммиты в самый конец делая историю линейной как в Subversion, т.е. избегая веток и лишних merge-коммитов.

Если всё прошло гладко (без конфликтов) можно сразу же делать git push. В редких случаях конфликтов (вы и кто-то меняли одну и ту же строку) rebase остановится и далее конечно придется разбираться самому и завершать апдейт с помощью git rebase —continue сколько нужно раз и git stash apply чтобы вернуть заныканные изменения.

Есть много аналогов, но в большинстве своем это нелаконичные скрипты. Алиас легко добавить на любом сервере вместе с другими просто вставив в консоль всё это:

# git up git config --global alias.up '!(git add . && git stash && git pull --rebase >&2) | grep -v "No local changes to save" && git stash pop'  # git in / git out — смотреть какие коммиты придут/уйдут перед выполнением pull/push git config --global alias.in '!git remote update -p; git log ..@{u}' git config --global alias.out 'log @{u}..'  # git addremove - добавить в индекс новые файлы/изменения и удалить всё что удалилось git config --global alias.addremove \!"git add . && git ls-files --deleted | xargs --no-run-if-empty git rm"  # git unstage - убрать всё из индекса (чтобы например добавить/закоммитить сначала что-то другое) git config --global alias.unstage "reset HEAD --"  # git backup - заархивировать весь локальный репозиторий перед экспериментированием git config --global alias.backup \!'file=../`git describe`.tar && echo "Creating `readlink -f $file`" && tar cf $file .'  # Просто удобные сокращения git config --global alias.st "status -sb" git config --global alias.ci commit git config --global alias.co checkout git config --global alias.br branch git config --global alias.bra "branch -a" git config --global alias.chp cherry-pick git config --global alias.pr "pull --rebase" git config --global alias.bl "blame -b -w" git config --global alias.cia "commit --amend" git config --global alias.lg "log --pretty=format:'%h was %an, %ar, message: %s' --graph" git config --global alias.who "shortlog -s --"  # what else? 

Делитесь полезными алиасами!

ссылка на оригинал статьи http://habrahabr.ru/post/155391/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *