===== Шпаргалка по git =====
====Подготовка====
Авторизация идёт по ключу. Ключи брать у **Asmodeus**’a.\\
Прописать путь к ключу в ''/etc/ssh/ssh_config''
Host abills.net.ua
IdentityFile **Путь к ключу**
Указываем свои даные
# git config --global user.name *Имя разработчика*
# git config --global user.mail *e-mail разработчика*
Клонирование репозитория
# cd /usr
# git clone git@abills.net.ua:abills.git
*Если просит пароль для git, значит не подхватило ключ.
====Создание ветки====
Для примера, рассмотрим правку модуля Msgs.
Переходим в dev:
# git checkout dev
Стягиваем обновления из dev
# git pull origin dev
Отделяем ветку
# git branch Msgs
Переходим в новую ветку
# git checkout Msgs
Можно одной командой
# git checkout -b Msgs
====Рабочий процесс====
Создаём новую ветку для задачи ''Msgs''\\
# git checkout -b Msgs
В новой ветке:\\
Повторить нужное количество раз:\\
<эти действия>\\
Редактируем до достижения результата. \\
# edit some files\\
Фиксируем изменения:\\
# git commit -a -m ‘(описание изменений)’\\
эти действия>\\
Заливаем в основной репозиторий в ветку ''Msgs''
# git push origin Msgs
==== Залить готовые изменения (сделанные до подключения к git): ====
Перемещаем свою папку abills\\
Клонируем репозиторий\\
Отделяем ветку\\
Вносим свои изменения из копии\\
Фиксируем.\\
====Внештатные ситуации:====
Conflict
Если несколько человек редактировали один файл, может возникнуть конфликт слияния.\\
После git pull и сообщения о возникновения конфликта\\
# vimdiff *путь к файлу*
ищем >>>>>HEAD\\
…..\\
===========\\
…..\\
<<<<<<<<
Если во время работы над одной веткой, нужно перейти в другую, без фиксации изменений\\
“Прячем” изменения:
# git stash
Переходим в другую ветку:
# git checkout branch2
Редактируем:
# edit some files
Фиксируем:
# git commit -a -m ‘message’
Возвращаемся в первую ветку:
# git checkout branch1
Применяем спрятанные изменения:
# git stash pop
Git log варианты вывода
git log --graph --pretty=format:"%C(yellow)%h%Creset%C(blue)%d%Creset %C(white bold)%s%Creset %C(white dim)(by %an %ar)%Creset" --all
==== Обновление списка удалённых веток ====
# git remote update origin --prune
====Алиасы====
Вставить в ~/.gitconfig в секцию [alias]
[alias]
st=status
pl = pull
ph = push
b = branch
ch = checkout
df = diff
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
type = cat-file -t
dump = cat-file -p
==== Процесс Code review для исполнителя ====
** Подготовка кода к review **\\
- Убедиться, что функционал работает \\
* Если это подключаемый функционал (через права или опцию в конфиге), убедиться что при выключении функционала система работает так же, как и до внесения изменений.
- Просмотреть код и убрать всё, что использовалось при отладке (_bp, Dumper, импорт модулей с этими функциями)
- Для алгоритмически сложных частей написать в комментариях, что именно делает код и почему использовалось именно это решение.
** Залить код для проверки **\\
- Залить в отдельную ветку для review (''текущая_ветка''_review)
- Слить основную ветку (dev или ветку review'ера)
- Поменять статус задачи на "На тестировании". Написать имя ветки в комментариях к задаче.
- Уведомить ответственного за review гарантированным методом (личный контакт или по договорённости)
** Обработать результат review **\\
После получения ответа \\
Если задача перемещена в статус "Обратная связь"\\
* Слить (merge) ветку ''_review'' в ветку задачи.
* В комментариях задачи просмотреть замечания (если есть)
Если задача перемещена в статус "Решена"\\
* Ожидать решения ПМ по закрытию задачи.
==== Процесс Code review для проверяющего ====
- Перейти на ветку для проверки задачи
- Проверить выполнение
- Проверить функционал
- Проверить код (отметить подозрительные места, если есть). Где надо, выставить пометки ''# TODO: comments''.
- Залить свою ветку в ветку ''_review''
- Оставить замечания в комментариях к задаче.
- Выставить нужный статус (''Решена'' или ''Обратная связь'' )
====Полезные статьи:====
http://asmodeus.com.ua/lib/category/programming/git/