Система контроля версий Git. Урок 4
Разбираем команду git pull и механизм Pull request
Мы продолжаем изучать систему контроля версий git. Сегодня разбираемся, как организовать совместную работу над проектом с вашими коллегами.
Git pull
Подключить новых участников к вашему репозиторию можно в меню Settings → Collaborators → Add People.
Мы можем добавлять других участников по их email или никнеймам. Когда они примут наше приглашение, они смогут вносить изменения в проект.
Сымитируем компьютер другого человека, создав вторую папку на нашем компьютере. Назовем ее «Второй участник». Открываем терминал по адресу папки, копируем ссылку на репозиторий на git hub.
Клонируем репозиторий по ссылке: git clone <ссылка на репозиторий>.
Проверим, как называется появившаяся папка с реп озиторием: ls.
Заходим в нее: cd git_tutorial.
Включаем отображение веток в терминале: source ~/.zchrc. Подробнее про отображение веток мы рассказывали в прошлом уроке.
Представим, что второй участник решил внести изменения. Он открыл файл в редакторе и добавил в начало код а импорт библиотеки datetime: from datetime import datetime. А последней строкой настроил вывод даты: print("Today: ", datetime.today().strftime('%d/%m/%Y'))
Он коммитит изменения в терминале: git commit -a -m "Add datetime".
Заливает их на Github: git push.
Представим, что мы не знаем, что такие изменения были внесены, и продолжаем работать над проектом локально. Открываем проект в редакторе, добавляем одну строку: print("Our project: Git_Tutorial").
Открываем терминал по адресу нашей основной папки Git_Tutorial, в которой начинали работать над проектом. Коммитим изменения: git commit -a -m "Project name".
Пытаемся передать изменения на удаленный репозиторий: git push. Не получается. Git пишет, что версия проекта на нашем компьютере не совпадает с версией на удаленном репозитории. Так получилось, потому что другой участник проекта уже внес какие-то изменения.
Чтобы синхронизировать локальную версию с удаленной, git предлагает команду git pull. Применяем ее: git pull.
Видим сообщение о конфликте в файле test.py.
Чтобы разрешить конфликт, переходим в редактор. Зеленым подсвечены наши изменения, синим — изменения, которые добавил в проект кто-то другой.
VSCode предлагает несколько вариантов, в каком виде сохранить код. В нашей ситуации нам подходит принять все изменения. Выбираем accept both changes. Сохраняем изменения в редакторе.
Коммитим изменения в терминале: git commit -a -m "Add project name". Отправляем на GitHub: git push.
Issues
Когда мы работаем в команде, удобно, когда каждый участник понимает, что происходит с кодом и кто какие изменения собирается вносить. Обсуждать развитие проекта, указывать на ошибки в коде, предлагать улучшения удобно во вкладке issues.
Создадим вкладку issue, чтобы обсуждать изменения в проекте с другими участниками. Нажимаем на зеленую кнопку, пишем название: delete input. Добавляем описание: предлагаю убрать input и переписать первую строку вывода, чтобы не вводить имя каждый раз. Здесь используется тот же язык markdown, как и в файле с описанием проекта README.