Цель

Создать репозиторий совместно с коллегой и получить от него отзыв о внесенных изменениях.

Краткое описание основной задачи

Все это время вы работали в репозитории в одиночку. Но как быть, если вам необходимо организовать совместную работу с коллегами? Это можно сделать вне зависимости от того, находитесь вы с ними в одной комнате или на разных концах земного шара.

Время Аудитория Предварительное условие
15 минут У вас есть опыт использования Bitbucket Cloud либо вы ознакомились с одним из обучающих руководств для новичков. Регистрация в Bitbucket Cloud
Не требуется Для тех, кто предпочитает использовать Bitbucket Cloud и Git с графическим интерфейсом Регистрация в Sourcetree

О ветках и запросах pull

Если в команде присутствует несколько пользователей Bitbucket, вам будет нужно работать над собственным кодом отдельно от основной базы кода. Для этого используются ветки, представляющие собой независимое направление разработки в репозитории. Ветку можно рассматривать как комбинацию новых разделов — рабочего каталога, индекса и истории проекта. После создания ветки вы будете работать над кодом и отправлять его в эту ветку в качестве коммитов. Кроме того, вам придется извлекать обновления из Bitbucket для поддержания актуальности данных в ветке, а затем отправлять результаты работы обратно в Bitbucket.

Когда в ветке Bitbucket возникают изменения в коде, можно создать запрос pull и инициировать проверку кода. Перед подтверждением запроса участники команды выскажутся относительно кода и зададут вопросы. Получив достаточное количество подтверждений, вы сможете выполнить слияние запроса pull и объединить ветку с основным кодом.

Создание репозитория и добавление коллег

Вы только что прибыли на космическую станцию Bitbucket. Вам предстоит выполнить основные действия, в том числе внести изменения в стартовый пакет и пройти процедуру их подтверждения. Чтобы начать работу, вам необходимо создать репозиторий команды с некоторым содержимым и предоставить к нему доступ для некоторых пользователей.

  1. Нажмите + на глобальной боковой панели и выберите Repository (Репозиторий) в разделе Create (Создать).

  2. Убедитесь, что созданная в репозитории команда имеет статус владельца репозитория.

  3. Введите желаемое название проекта и название репозитория. Если вы затрудняетесь с выбором, используйте варианты «Стартовый набор» и «Первые впечатления» соответственно.

  4. В области Include a README? (Добавить файл README?) выберите один из вариантов Yes (Да).

  5. В области Version control system (Система управления версиями) выберите тип репозитория, который нужно создать. Если вы затрудняетесь с выбором, оставьте эту настройку без изменений.

  6. Нажмите Create repository (Создать репозиторий). Откроется представление Source (Исходный код) для созданного репозитория.

  7. В разделе Source выберите > Add file (Добавить файл).

  8. Назначьте файлу имя survey.html, затем скопируйте код и вставьте его в основную область текста.

\<\!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style media="screen" type="text/css"> body { margin: auto; width: 700px; color: #FFFFFF; font-family: Arial, sans-serif; background-color: #172B4D; } body>h1 { margin: 50px; font-size: 50px; text-align: center; color: #0052CC; } </style></head><body> <h1>Team up in space</h1> <p> Welcome to the team! You've made it this far so we know that you've got the potential to do great things. Because you're going to be collaborating with other awesome people, anything you add needs to be code reviewed and approved. That's just how a team works! You should have already created a branch and checked it out locally. If you haven't, go back to the tutorial and do that now. We'll be here. </p> <p> Because you're on your own branch, you can go crazy. Spice up this file any way you like. Add more files to this repository if you see fit. If want to take it slow and are just here to learn about pull requests, you can use this opportunity to fill out our short questionaire. </p> <br> <p> <b>Question 1</b>: Have you used pull requests before? </p> <p> <b>Answer 1</b>: **** Your answer here **** </p> <p> <b>Question 2</b>: Why do you want to learn about code review? </p> <p> <b>Answer 2</b>: **** Your answer here **** </p> <p> <b>Question 3</b>: Who do you plan to work with on Bitbucket? </p> <p> <b>Answer 3</b>: **** Your answer here **** </p></body></html>
  1. Нажмите Commit (Сделать коммит), затем повторно нажмите Commit в диалоговом окне.

Теперь репозиторий выглядит неплохо. При желании вы можете просмотреть доступные возможности. Нажмите Settings (Настройки) и перейдите на страницу User and groups access (Доступ пользователей и групп). Отсюда видно, что у добавленного вами коллеги breezycloud имеется доступ к репозиторию посредством группы Developers (Разработчики).

Клонирование и внесение изменений в новую ветку

В большинстве случаев при работе в команде репозиторий клонируется перед созданием ветки, поэтому сейчас мы поступим так же.

Если вы используете командную строку

Шаг 1. Клонируйте репозиторий в локальную систему

Перейдем в локальную систему, чтобы приступить к работе.

  1. В репозитории нажмите кнопку Clone (Клонировать) в правом верхнем углу.
    В Bitbucket появится диалоговое окно Clone this repository (Клонировать репозиторий). По умолчанию в диалоговом окне выбран протокол HTTPS или SSH в зависимости от выбранных настроек. Поэтому изменять протокол по умолчанию не требуется.
  2. Скопируйте команду клонирования.

  3. В окне терминала выберите локальный каталог, в который требуется клонировать репозиторий.

$ cd ~/<path_to_directory>
  1. Вставьте команду, скопированную из Bitbucket, например:
$ git clone https://breezy@bitbucket.org/powerstars/first-impressions.git

Cloning into 'first-impressions'...
Password for 'https://breezycloud@bitbucket.org': 
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.

Подробная информация о клонировании приведена в соответствующем видео:

Шаг 2. Создайте ветку и переместите ее в локальную среду

Настройка репозитория завершена, и теперь начинается самое интересное. Вы можете создавать ветки локально или через Bitbucket. В рамках обучающего руководства мы воспользуемся вторым методом.

  1. Нажмите Branches (Ветки) на левой панели навигации. Вы увидите, что у вас уже есть главная ветка (master).

  2. Нажмите Create a branch (Создать ветку) в верхнем правом углу.

  3. После создания ветки ее необходимо выбрать в локальной системе. В Bitbucket доступна команда переключения, которую можно скопировать и вставить в командную строку. Команда будет иметь примерно следующий вид:

$ git fetch && git checkout my-updates

Password for 'https://breezycloud@bitbucket.org': 
From https://bitbucket.org/planetbreezycloud/first-impressions
 * [new branch]      my-updates -> origin/my-updates
Branch 'my-updates' set up to track remote branch 'my-updates' from 'origin'.
Switched to a new branch 'my-updates'

Вы переключились на локальную версию новой ветки. Теперь вы можете работать с изолированным участком кода и затем опубликовать его.

Шаг 3. Внесите изменения в ветку

На этом этапе вам необходимо внести в репозиторий несколько изменений. Как указано в файле, можно использовать самый нестандартный вариант организации данных или выбрать нечто попроще. Измените CSS. Добавьте новые файлы. Напишите космическую оперу. Или просто ответьте на вопросы.

  1. Откройте в текстовом редакторе файл с именем survey.html (может иметь другое имя).

  2. Внесите нужные изменения, затем сохраните и закройте файл.

  3. Если в окне терминала не выполнялось никаких действий, там будет отображаться каталог репозитория. Просмотрите состояние репозитория с помощью команды git status. Вы увидите измененный файл survey.html. Если вы добавили или изменили другие файлы, они также будут отображены.

$ git status
On branch my-updates
Your branch is up-to-date with 'origin/my-updates'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
        modified:   survey.html
no changes added to commit (use "git add" and/or "git commit -a")
  1. Внесите изменения локально с помощью команды git add :
$ git add survey.html
  1. Отправьте изменения локально с помощью команды git commit -m "ваше сообщение коммита":
$ git commit -m "Answered questions"
[my-updates 7506040] Answered questions
 1 file changed, 3 insertions(+), 3 deletions(-)
  1. Введите git push origin , чтобы отправить изменения в ветку Bitbucket, и введите пароль для завершения операции.
$ git push origin my-updates

Password for 'https://breezycloud@bitbucket.org': 

Counting objects: 3, done.

Delta compression using up to 8 threads.

Compressing objects: 100% (3/3), done.

Writing objects: 100% (3/3), 350 bytes | 350.00 KiB/s, done.

Total 3 (delta 1), reused 0 (delta 0)

To https://bitbucket.org/planetbreezycloud/first-impressions.git

   454ccaf..7506040  my-updates -> my-updates

Branch master set up to track remote branch master from origin.
  1. В Bitbucket перейдите на страницу репозитория Source (Исходный код). В раскрывающемся списке вы увидите две ветки. Коммиты, сделанные для элемента my-updates, также будут отображаться в соответствующей ветке.

Если вы используете Sourcetree

Шаг 1. Клонируйте репозиторий в локальную систему

Перейдем в локальную систему, чтобы приступить к работе.

  1. В репозитории нажмите + на глобальной боковой панели и выберите Clone this repository (Клонировать репозиторий) в разделе Get to work (Обработать).
  2. Нажмите кнопку Clone in Sourcetree (Клонировать в Sourcetree).
  3. В диалоговом окне Clone New (Клонировать новый элемент) измените значение Destination Path (Путь назначения) на /first-impressions/.
  4. Нажмите кнопку Clone (Клонировать).

Чтобы ознакомиться с процедурой, просмотрите раздел видео о клонировании репозитория:

Шаг 2. Создайте ветку и переместите ее в локальную среду

Настройка репозитория завершена, и теперь начинается самое интересное. Ветки используются не только в Bitbucket, поэтому их можно создавать локально. Однако в рамках обучающего руководства мы создадим ветку в Bitbucket.

  1. Нажмите Branches (Ветки) в левой панели навигации. Вы увидите, что у вас уже есть главная ветка.

  2. Нажмите Create a branch (Создать ветку) в верхнем правом углу.

  3. Введите название ветки и нажмите Create (Создать). Если вы затрудняетесь с выбором названия, используйте такой вариант, как my‑updates.

  4. После создания ветки ее необходимо выбрать в локальной системе. Для этого нажмите кнопку Check out in Sourcetree (Переключить в Sourcetree).

  5. В диалоговом окне Checkout Existing (Переключить существующий элемент) в Sourcetree нажмите Checkout (Переключить).

Теперь ветка существует в Bitbucket и выбрана в локальной системе. Вы можете работать с изолированным участком кода и затем опубликовать его.

Шаг 3. Внесите изменения в ветку

На этом этапе необходимо внести в репозиторий несколько изменений. Как указано в файле, вы можете использовать самый нестандартный вариант организации данных или выбрать нечто попроще. Измените CSS. Добавьте новые файлы. Напишите космическую оперу. Или просто ответьте на вопросы.

  1. В репозитории Sourcetree нажмите кнопку Show in Finder (Показать в поиске).
  2. Откройте в текстовом редакторе файл с именем survey.html (может иметь другое имя).

  3. Внесите изменения, затем сохраните и закройте файл.

  4. Откройте Sourcetree. Вы увидите, что в репозитории появились неотправленные изменения.

  5. Добавьте файл в индекс (только для Git):

    1. Выберите строку с неотправленными изменениями.

    2. В списке Unstaged files (Файлы, удаленные из индекса) установите галочку рядом с файлом survey.html (сделайте то же самое для других файлов, содержащих неотправленные изменения).

    3. В диалоговом окне Confirm Stage? (Подтвердить индексирование?) нажмите OK.

  6. Нажмите кнопку Commit (Сделать коммит) в верхней части страницы, чтобы сделать коммит файла.

  7. Введите сообщение коммита в соответствующей области, например «Отвечено».

  8. Нажмите кнопку Commit под областью сообщения. После переключения в прежнее представление вы заметите, что файл отправлен, но не опубликован в репозитории Bitbucket.

  9. В Sourcetree нажмите кнопку Push (Опубликовать), чтобы опубликовать отправленные изменения.

  10. В открывшемся диалоговом окне нажмите OK, чтобы опубликовать ветку с коммитом в Bitbucket.

  11. В Bitbucket перейдите на страницу Source (Исходный код) вашего репозитория. В раскрывающемся списке вы увидите две ветки. Другие изменения, отправленные в my-updates, также появятся в этой ветке.

Создание запроса pull для слияния изменений

Далее потребуется создать запрос pull. Это нужно, чтобы сообщить коллегам о внесенных изменениях и запросить у них подтверждение. Запрос pull не только инициирует проверку кода, но также позволяет просмотреть сравнение нового кода с исходным репозиторием. Кроме того, с помощью такого запроса можно без труда выполнить слияние кода.

Шаг 1. Создайте запрос pull

Для создания запроса pull необходима ветка — вы уже создали ее ранее.

  1. В репозитории нажмите + на глобальной боковой панели. Затем нажмите Create a pull request (Создать запрос pull) в разделе Get to work (Обработать).
    В Bitbucket появится форма запроса.
  2. Заполните форму:
    1. В поле Title (Название) автоматически отобразится ваше последнее сообщение коммита.

    2. При необходимости добавьте информацию в поле Description (Описание).

    3. В поле Reviewers (Проверяющие) добавьте коллегу breezycloud в качестве проверяющего.

    В результате форма будет иметь примерно следующий вид:
  3. Нажмите Create pull request (Создать запрос pull).

В Bitbucket откроется запрос pull, и проверяющий получит по электронной почте уведомление с подробными данными запроса для проверки.

Шаг 2. Выполните слияние запроса pull

Подождите! Вы могли заметить кнопку Merge (Слияние) в верхней части страницы. Перед тем как ее нажать, необходимо дождаться подтверждения изменений. Ваши коллеги получат уведомление по электронной почте, а также увидят запрос pull в разделе Pull requests to review (Запросы pull, ожидающие проверки) дашбоарда Your work (Ваша работа).

Перед нажатием кнопки Approve (Подтвердить) проверяющий может просмотреть в запросе pull все изменения и добавить комментарии, таким образом начав обсуждение.

Когда коллега подтвердит ваш запрос pull, вы получите уведомление по электронной почте. После получения всех необходимых подтверждений (в данном случае нужно лишь одно) можно выполнить слияние. В разделе запроса pull нажмите Merge (Слияние). Готово! Если вам нужно увидеть, как выглядит ваша ветка после слияния с главной веткой, нажмите Commits (Коммиты). Это действие откроет дерево коммитов.