GitHub

Часть 1, Часть 2

Рабочий процесс на 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.
Новый Pull request
Создание 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-файла (ссылку см. ниже).

git clone https://github.com/bonn0062/github_welcome_wall.git
  • Создайте новую ветку, добавьте файл welcome_wall.md с какой-нибудь мотивирующей цитатой. Это можно сделать на сайте GitHub. Но куда интереснее склонировать репозиторий на свой компьютер, открыть файл в любимом текстовом редакторе и вписать там нужный комментарий. Так знания лучше усвоятся.
  • Создайте Pull request.
  • Добавьте комментарий, описывающий суть изменений. Нажмите зеленую кнопку для отправки Pull request.

Поздравляю — вы успешно справились!

<figure><iframe width="435" height="244" src="/media/645604587ba05da2b5095a0cb2cf64e5" allowfullscreen=""></iframe></figure>

Читайте также:


Перевод статьи Anne Bonner: Getting started with Git and GitHub: the complete beginner’s guide