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-remoteclone_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 вы можете получить доступ к проектам из любой точки мира, используя основы рабочего процесса, которые вы здесь узнали.