Learn Git. Git Teamwork. Codecademy на русском
1. Overview
До сих пор мы работали в Git-е для одного пользователя. Git предлагает набор инструментов и для совместной работы, чтобы сделать работу над проектом с другими людьми проще.
Представим, что вы учитель, разрабатываете тесты с Салли, другим учителем в школе. Вы используете Git для совместным управлением проектом.
Для того, чтобы сотрудничать вам с Салли нужно:
- Полная копия проекта на собственных компьютерах
- Способ отслеживания и проверки работы друг у друга
- Доступ к окончательной версии проекта
Всё это вы можете сделать используя удалённые репозитории. Удалённый репозиторий - это общий Git-репозиторий, который позволяет нескольким сотрудникам работать в одном проекте Git из разных мест. Сотрудники работают над проектом по отдельности, а потом объединяют все изменения вместе, когда они будут готовы это сделать.
2. Git Clone
Салли создала удалённый репозиторий, science-quizzes в каталоге curriculum (учебная программа), к которой преподаватели имеют доступ через общую сеть школы. Для того, чтобы получить свою собственную копию science-quizzes, вам необходимо клонировать репозиторий при помощи команды git clone remote_location clone_name
. В этой команде:
remote_location
- сообщает Git где находиться удалённый репозиторий. Это может быть веб-адрес или путь к файлу, например:/Users/teachers/Documents/some-remote
clone_name
- это имя каталога в который Git будет клонировать репозиторий.
Инструкции:
- Удалённый Git-репозиторий называется
science-quizzes
Введите команду для клонирования данного репозитория. Назовите папку для клонированияmy-quizzes
Обратите внимание на выводы в терминале:cloning into 'my-quizzes'...
Git сообщает нам, что он копирует всё из science-quizzes в каталог my-quizzes.
my-quizzes - это ваша локальная копия Git-проекта science-quizzes. Если вы будете коммитить все изменения только здесь, то Салли не будет знать о них.
3. Git remote -v
Хорошая работа! Теперь на нашем компьютере есть клон удалённого репозитория Салли. Есть ещё одна вещь, которая делается за кулисами: когда вы клонируете репозиторий, Git автоматически добавляет этот удалённый репозиторий под именем origin, дабы упростить обращение к удалённому репозиторию. В данном случае удалённый репозиторий Салли это origin.
Вы можете посмотреть список удалённых Git-проектов с помощью команды git remote -v
Инструкции:
- Используя навигатор изучите содержимое клонированного Git-проекта. Там есть несколько викторин файлов, с которыми мы будем работать в течение этого урока.
Откройте любой файл на ваш выбор в текстовом редакторе. - В командной строке переместитесь в каталог my-quizzes, введя команду:
cd my-quizzes
Чтобы узнать побольше о командеcd
, то переходите по ссылке. - Введите команду
git remote -v
, чтобы посмотреть доступные удалённые репозитории.
Обратите внимание на результаты в терминале:
origin /home/ccuser/workspace/curriculum/science-quizzes (fetch) origin /home/ccuser/workspace/curriculum/science-quizzes (push)
- Git выводит имя удалённого репозитория,
origin
, и его местоположение. - Git автоматически называет удалённый репозиторий именем
origin
, чтобы можно было бы ссылаться на данный удалённый репозиторий. Также можно безопасно изменить это имя. - Удалённый репозиторий был перечислен дважды: один раз для
(fetch)
и один раз для(push)
. О них мы узнаем чуть позже.
- Git выводит имя удалённого репозитория,
4. Git fetch
После того, как вы клонировали science-quizzes, вы убежали проводить урок. Теперь, вернувшись к компьютеру, вы обнаружили проблему: пока вы преподавали, Салли проделала изменения в Git-проекте science-quizzes. В таком случае ваша копия репозитория не обновлена до последней версии.
Самый простой способ узнать, внесены ли какие-либо изменения в удалённый репозиторий и забрать эти изменения с помощью команды git fetch
Эта команда не сливает изменения из удалённого репозитория в ваш локальный репозиторий. Вы просто получаете изменения, которыя называются удалённая ветка. Ниже вы больше узнаете о том, как это работает.
Инструкции:
- Введите следующую команду:
cd my-quizzes
чтобы перейти в каталог my-quizzes. - Получите (fetch) все новые изменения от Салли, которые возможно она сделала в удалённом репозитории.
5. Git merge
Даже если новые коммиты Салли были извлечены (fetched) в вашу локальную копию Git-проекта, то эти коммиты всё равно находятся на ветке origin/master
. Ваша локальная ветка master
всё ещё не была оббновлена, так что вы не сможете просматривать или вносить изменения в работу, которую она добавила.
В Уроке III, Git Branching мы изучали слияние веток. Сейчас мы используем команду git merge
, чтобы объединить ветку origin/master
в вашу локальную ветку master
. Команда git merge origin/master
выполнит эту задачу.
Инструкции:
- Введите следующую команду:
cd my-quizzes
чтобы перейти в каталог my-quizzes. - Вы находитесь в локальной ветке
master
. В вашей истории коммитов, сообщениеHEAD
-коммита следующее:Add first question to Physics quiz
Через терминал слейте с веткойorigin/master
, в которой находятся самые последние коммиты.
Обратите внимание на вывод терминала:
Updating a2ba090..bc87a1a Fast-forward biology.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
- Git выполнил "быструю перемотку" (fast-forward) слияния, в результате чего ваша локальная ветка
master
обновиться до последних коммитов Салли.
- Git выполнил "быструю перемотку" (fast-forward) слияния, в результате чего ваша локальная ветка
- Посмотрите историю коммитов.
В выходных данных обратите внимание, чтоHEAD
-коммит изменился. Теперь сообщение следующее:Add heading and comment to biology quiz
6. Git workflow
Теперь, когда вы объединили origin/master
в локальную ветку master
, вы самостоятельно готовы внести свой вклад в работу. Рабочий процесс для Git-сотрудников обычно следует этому порядку:
- Получение (fetch) и слияние (merge) изменений из удалённного репозитория
- Создание рабочей ветки для новой функции (фичи) проекта
- Разработка функции на вашей ветке и комммит своей работы
- Получение (fetch) и слияние (merge) изменений из удалённного репозитория снова (в случая, если были сделаны новые коммиты пока вы работали)
- Отправление (push) ветки в удалённую ветку для рассмотрения.
1 и 4 шаги являются гарантией против конфликта слияния веток, когда две ветви содержат изменения файлов, которые не могут объединиться командой git merge
. 5 шаг включает в себя команду git push
, о которой вы узнаете в следующем упражнении.
Инструкции:
- Введите следующую команду:
cd my-quizzes
чтобы перейти в каталог my-quizzes. - Введите Git-команду:
git branch branch_name
, чтобы создать ветку для разработки вопросов по биологии. Назовите ветву так:bio-questions
.
Примечание: будьте осторожны, напишите именно такое название, без ошибок. - Переключитесь на новую ветку с помощью команды
git checkout branch_name
, где branch_name - это имя нового ветки. - На вашей ветке, откройте в редакторе кода файл biology.txt.Добавьте вопросы по биологии в файл с вариантами ответов. Например:
What is an animal that hunts and eats other animals called? a) herbivore b) prey c) ecosystem d) predatorЦ
- Проиндексируйте файл biology.txt.
- Сделайте коммит с соответствующим коммит-сообщением.
7. Git push
Теперь пришло время, чтобы поделиться нашей работой с Салли.
Команда git push origin your_branch_name
отправит всю работу в удалённый репозиторий, origin
. Оттуда, Салли может рассмотреть вашу ветку и объединить вашу работу в свою ветку master
, сделав его частью окончательной версии проекта.
Инструкции:
- Введите следующую команду:
cd my-quizzes
чтобы перейти в каталог my-quizzes. - Отправьте свою ветку в удалённый репозиторий. В выходных данных, обратите внимание на строку:
To /home/ccuser/workspace/curriculum/science-quizzes * [new branch] bio-questions -> bio-questions
Git сообщает нам, что веткаbio-questions
была отправлена в удалённый репозиторий. Теперь Салли может рассмотреть вашу новую работу и объединить его в удалённую веткуmaster
.
Итоги
Поздравляем, теперь вы знаете достаточно, чтобы начать совместную работу Git-проектов! Давайте повторим всё.
- Удалённый репозиторий представляет собой хранилище Git, которое находиться за пределами вашей папки Git-проекта. Удалённые репозитории могут находиться в Интернете, в общей сети или даже в отдельной папке на локальном компьютере.
- Git Совместная Работа - шаги, которые дают возможность плавному развитию проекта, когда несколько сотрудников работают над одним Git-проектом.
Также мы узнали следующие команды:
git clone
- создает локальную копию удалённого репозитория.git remote -v
: выводит список удалённых репозиториев.git fetch
: получает изменения из удалённого репозитория в локальную копию.git merge origin/master
: объединяет веткуorigin/master
в локальную ветку.git push origin branch_name
: отправляет локальную ветку вorigin
-репозиторий.
Git проекты, как правило, находяться на Github, веб-сайте, на котором размещены Git-проекты миллионов пользователей. С Github вы можете получить доступ к проектам из любой точки мира, используя основы рабочего процесса, которые вы здесь узнали.