Знакомство с Git и GitHub: руководство для начинающих
Предыдущая статья: Часть 1, Часть 2
Учимся работать с другими
Совместная работа — это визитная карточка GitHub!
Рабочий процесс на GitHub
Допустим, у вас есть проект с кучей разных идей и возможностей для дальнейшей реализации. Что-то из этого уже готово, а над чем-то еще стоит потрудиться. Вполне возможно, что вы сотрудничаете с другими пользователями, которые работают над чем-то своим. Здесь и пригодится ветвление!
Ветка — это отдельное место для реализации новых идей. Изменения в ветке не затронут основную ветку master
до тех пор, пока вы сами этого не захотите. То есть с отдельной веткой вы делаете что угодно, а затем просто сливаете эти изменения с основной веткой master
.
Единственная ветка, которая может изменять проект, — это master
. Если вы не хотите вносить изменения сразу, то выделите их отдельной веткой, а затем сливайте с master
.
Если вы работаете с другими и хотите внести собственные изменения либо работаете над проектом и хотите изменить что-то, не затрагивая master
, то создавайте отдельную ветку. Сделать это можно в любое время.
Очень удобно создавать в терминале ветку с названием new_feature
(новая опция) и переходить в нее по команде:
git checkout -b new_feature
Вносить изменения в ветку можно сразу после ее создания. Использование отдельных веток с подходящими названиями позволяет сразу понять, что именно изменялось и почему. Каждый новый коммит следует снабжать комментарием, описывающим суть изменений.
Теперь поговорим о переключении между ветками:
git checkout
Команда позволяет «заглянуть» в репозиторий, который в данный момент не открыт. Например, вы можете перейти в ветку master
:
git checkout master
или открыть ветку new_feature
:
git checkout new_feature
По завершению работы с веткой можно слить эти изменения с master
, чтобы их увидели другие.
git merge new_feature
Эта команда берет все изменения в ветке new_feature
и добавляет их в ветку master
.
Вы можете отправить изменения в репозиторий и установить удаленную ветку (например, new_feature
) в качестве «отслеживаемой»:
git push — set-upstream origin new_feature
Допустим, вы внесли какие-то изменения. Эти изменения вас устраивают, и вы хотите создать запрос на принятие изменений (Pull request). В Pull request ваши коллеги смогут проверить внесенные изменения и обсудить их. Pull request можно создавать по любому поводу, будь то внесение конечных изменений или просьба о помощи в решении какой-либо проблемы.
Эмммм… это делается через сайт?
Да, все это делается с сайта GitHub.
Pull request создается по нажатию одноименной кнопки, о которой мы говорили ранее при редактировании README-файла. Элементарно!
А еще вы можете создать отдельную ветку на сайте через сам репозиторий. Перейдите в репозиторий и кликните по выпадающему меню в левой части экрана. Там еще написано Branch: master. Задайте имя новой ветки и выберите Create branch (либо нажмите Enter
на клавиатуре). Теперь у вас есть две одинаковые ветки. Это отличное место для внесения изменений и тестирования их до слияния с master
.
Если вы работаете в отдельной ветке, то изменения затронут только ее.
Если вас устраивают внесенные изменения вы и хотите слить их с основной веткой, создайте Pull request. При коллективной работе вы можете предложить свои изменения через Pull request и попросить проверить их или слить их с нужными ветками.
Pull request можно открыть сразу при создании коммита, даже если вы все еще работаете с кодом. Делается это с сайта GitHub. Допустим, вы внесли изменения в ветку и хотите слить их с master
. Тогда:
- Кликните по вкладке Pull request вверху экрана.
- Нажмите зеленую кнопку New pull request.
- Перейдите в поле Example Comparisons. Выберите ветку, которую хотите сравнить с
master
. - Еще раз просмотрите все изменения, убедитесь, что они готовы для коммита.
- Нажмите большую зеленую кнопку New pull request. Напишите заголовок запроса, дайте краткое описание изменений. Нажмите Create pull request.
Если это ваш репозиторий, то слить изменения с master
можно через зеленую кнопку Merge pull request. Нажмите Confirm merge. Сразу после объединения нужной ветки с master
нажмите Delete branch в фиолетовом боксе.
Если вы участвуете в чужом проекте, то у участников команды (или проверяющего коммиты) могут возникнуть вопросы или замечания. Хотите внести какие-то изменения? Сейчас — самое время. Сразу по завершению изменений участники проекта смогут развертывать эти изменения напрямую из ветки и проводить конечное тестирование до слияния с master
. Вы также сможете произвести развертку изменений для проверки их в рабочей среде.
После утверждения изменений необходимо произвести слияние вашего кода с веткой master
. В Pull request хранится запись о ваших изменениях. Таким образом, вы всегда сможете открыть этот запрос и понять, какие изменения были сделаны и почему.
Обновление и слияние
Если вы хотите работать с самой свежей версией репозитория на локальном компьютере, то можно получать изменения с GitHub через git pull
. Для обновления локального репозитория до последнего коммита выполните в рабочей директории следующую команду:
git pull
Для слияния какой-то ветки с вашей активной веткой воспользуйтесь:
git merge <имя_ветки>
Git старается автоматически сливать изменения, однако это не всегда возможно. Иногда возникают конфликты слияния. Если такое произошло, то необходимо разрешить конфликт слияния вручную. После внесения нужных изменений отметьте их в качестве «объединенных» или «слитых» через git add <имя_файла>
. Просмотреть изменения до слияния можно по команде:
git diff <исходная_ветка> <целевая_ветка >
Перейти к ветке master
можно через:
git checkout master
После слияния последних изменений обязательно удалите эту ветку через команду:
git branch -d new_feature
Другие пользователи не увидят вашу ветку, пока она не будет отправлена на удаленный репозиторий. Для отправки ветки в репозиторий выполните следующую команду:
git push origin <ветка>
Подборка полезных команд
Для начала, вот вам шпаргалка по GitHub, где перечислены все самые полезные Git-команды.
Просмотр истории коммита в репозитории:
git log
Просмотр коммитов одного пользователя:
git log — author=<имя>
Просмотр непроиндексированных изменений:
git diff
Сложно запомнить нужные команды? Получите подсказку из 21 самой популярной команды:
git help
Либо почитайте разъяснения по использованию определенных команд. Например, вот эта команда показывает, как пользоваться clone
:
git help clone
Практическое задание
Давайте потренируемся, а заодно и поприветствуем всех, кто знакомится с Git и GitHub. Мы создадим Стену для записей GitHub Wall, где изучающие Git и GitHub смогут оставлять комментарии и участвовать в своих первых open-source проектах.
На своей Стене вы можете разместить любые материалы. Главное — помните о вежливости и доброжелательности. Оставьте комментарий, добавьте какую-то картинку… да что угодно. Если вам сложно придумать приветственный текст, то можете взять готовый шаблон из README-файла (ссылку см. ниже).
- Клонируйте мой репозиторий на сайте GitHub или по команде
git clone https://github.com/bonn0062/github_welcome_wall.git
- Создайте новую ветку, добавьте файл
welcome_wall.md
с какой-нибудь мотивирующей цитатой. Это можно сделать на сайте GitHub. Но куда интереснее склонировать репозиторий на свой компьютер, открыть файл в любимом текстовом редакторе и вписать там нужный комментарий. Так знания лучше усвоятся. - Создайте Pull request.
- Добавьте комментарий, описывающий суть изменений. Нажмите зеленую кнопку для отправки Pull request.
Поздравляю — вы успешно справились!
Читайте также: