HowToCommit - Yozh2/UNO GitHub Wiki
В данной статье Вы узнаете, как работать с данным репозиторием.
- Для начала, fork оригинальный репозиторий.
- Clone репозиторий на свой компьютер.
- На локальном репозитории подключите оригинальный репозиторий, как
remote upstream
, чтобы подтягивать изменения в коде оттуда. - На локальной системе создайте новый branch.
- Сделайте необходимые изменения в коде и закоммитьте изменения, в новосозданный branch.
- Push/sync изменения на свой репозиторий на GitHub
- Начните pull request в оригинальный репозиторий проекта в ветку TrashCan
- Ждите решения проверяющего и следите за комментариями к вашему коммиту.
- Хороший код должен быть хорошо задокументирован и закомментирован. Пишите докстринги, комментарии.
- Хороший код содержит хорошо названные переменные. Используйте
snake_case
, не используйте короткие названия, так как это может вызвать конфликты при merge. - Хороший код соответствует PEP8 стилю. Очень рекомендую прочитать этот короткий документ, это сильно улучшит Ваш
code style
. - Коммиты должны быть адекватно подписаны
1. Запрашивать pull-request можно из созданной Вами отдельной ветки только в TrashCan. Все остальные запросы будут отклоняться, если Вы не администратор.
- Перед запросом pull-request, Вы должны проверить, что Ваш код работает.
- Перед запросом pull-request, Вы должны проверить, что Ваша ветка нормально мёрджится с TrashCan и после этого код работает.
- Если pull-request не принят, надо переделать так, чтобы приняли.
Ниже обсудим каждый шаг и дадим необходимые комментарии.
Зайдите на страницу оригинального репозитория и ответвитесь (fork) от него, сделав копию репозитория в своём профиле.
Скачайте копию (clone) своего репозитория на компьютер. Сделать это можно с помощью git clone
или нажав на кнопку download as zip
и потом разорхивировав архив. Также можно воспользоваться одним из приложений, например, TortoiseGit
или GitHub Desktop
. Итак, вы получили локальную копию своего репозитория на компьютере. У вас должен быть установлен как минимум git
. Теперь Вы можете работать со своим репозиторием локально, используя все удобные возможности системы контроля версий Git, а затем, когда всё будет готово, Вы можете отправить копию своего локального репозитория обратно на GitHub, используя git push
(об этом читай ниже).
Когда репозиторий скачан, нужно разобраться, как подтягивать изменения в коде не только из Вашего (форка) репозитория на сервере, но и оригинального репозитория.
Общий список команд на этом шаге выглядит так:
git clone https://github.com/YOUR-USERNAME/UNO.git
cd into/cloned/fork-repo
git remote add upstream https://github.com/Yozh2/UNO.git
git fetch upstream
git pull upstream
В оригинальном репозитории присутствует три ветки (branches):
-
master
- все полностью готовые к релизу версии проекта. Гарантированно рабочие. Пушить сюда запрещено. Мёрджить может только администрация проекта. Все пулл-реквесты в master будут отклонены. Рекомендовано использовать эту ветку для ветвления от неё при начале работы, ибо тогда Ваш код изначально будет гарантированно работающим. -
develop
- активная ветвь разработки. Сюда мёрджатся коммиты из TrashCan, когда пройдут проверку и "обкатку". Всем, кроме администрации, пушить сюда также запрещено. Все пулл-реквесты в develop будут отклонены. Пуллить код отсюда рекомендуется, если вы хотите получить почти готовый код, прошедший проверку и с необходимыми дополнениями администрации. -
TrashCan
- ветвь для принятия работ студентов. Все пулл-реквесты студентов могут быть приняты только в эту ветку. После они проходят обкатку и проверку на пригодность и мёрджатся в develop. Пуллить из этой ветки можно, если Вы хотите получить самый актуальный, но нестабильный код.
Для внесения в код изменений в Вашем локальном репозитории рекомендуется создать новую ветку с помощью git checkout -b <feature>
или GUI-приложений. Новая ветка позволит не вносить изменений в уже существующие коммиты, поэтому, например, Вы всегда сможете переключиться на master и посмотреть локально первоначальное состояние рабочей версии. Плюс новые ветки позволяют вести несколько вариантов Вашего проекта одновременно и так, чтобы это не мешало друг другу. Это очень удобно. Почитайте об этом в Yozh2's Руководство по совместной разработке™
В локальном (скачанном на компьютер) репозитории в нужной ветке внесите необходимые изменения в существующий код. О правилах и стиле кода читайте ниже. Когда Вам захочется "сохранить" свой репозиторий и впечатать его версию в ткань мироздания - сделайте коммит. Чтобы добавить файлы в коммит, используйте git add <file>
, чтобы удалить из коммита git rm <file>
. Отправка готового коммита осуществляется через
git commit -m 'commentary message'
В комментарии рекомендуется указывать важные изменения, входящие внутрь коммита.
Также для коммитов можно использовать не только терминал, но и, например, TortoiseGit
, расширение для PyCharm
, Github Desktop
, SourceTree
или особую вкладку в Atom
. Ну или другие приложения для работы с Git.
Рекомендуется делать коммиты достаточно часто. Желательно - практически каждый раз, когда Вы собираетесь что-либо поменять. Как показывает практика, система контроля версий всегда будет более хорошим вариантом "сохранения", нежели просто нажатие Cmd/Crtl + S
. Важные коммиты стоит сопровождать комментариями (флаг -m
). Промежуточные коммиты можно делать без комментариев.
При работе с кодом, не забывайте регулярно подтягивать изменения с помощью git pull upstream
из оригинального репозитория, чтобы посмотреть, что произошло с кодом без Вас. Так как Вы создали локально новую ветку, на Ваш код это не повлияет, а вот код в других ветках может измениться. Это будет полезно на последнем шаге.
Когда Вам захочется залить Ваш локальный репозиторий на свой репозиторий в сети, нужно выполнить соответствующую команду:
git push
Все закоммиченные с момента последнего пуша (все версии Вашего репозитория с момента последнего пуша) изменения будут залиты на сервер с Вашим репозиторием. Все новые, созданные локально, ветки будут также созданы на сервере, если будут "запушены" коммиты, состоящие в этих ветках.
Самым важным этапом будет сдача работы. Для этого надо запросить pull-request
у оригинального репозитория. Согласно правилам, описанным выше, делать pull-request можно только в ветку TrashCan
.
Для этого нам надо зайти на GitHub, в свой репозиторий-форк оригинала и нажать на кнопку pull request
. В качестве отправляемой ветки выберите свою созданную feature-ветку. В качестве цели, в которую Вы пытаетесь запросить пулл-реквест, выберите TrashCan
. После пулл-реквеста Вы попадёте на новую страницу, где будет показана история Вашего пулл-реквеста. Здесь будут оставляться комментарии относительно Вашего запроса. Также здесь можно посмотреть, слиты ли изменения Вашей ветки с оригинальной.
Если Ваши изменения приняли - празднуйте успешную сдачу задания. Если появились комментарии, в которых Вас попросили что-то изменить, смело меняйте, коммитьте и затем пушьте - пулл реквест обновится автоматически. Повторять, пока код не примут, или пока админ не устанет.