$ git clone <адрес>![]() | ![]() |
Счетчиков Юрий Андреевич
для тех кто отстает
для тех кому хочется быстрее
зачем нужны системы контроля версий
основные понятия git: репозиторий, commit, push, branch
GitLab и совместная работа
Практическая часть
ДЗ
…была ли у вас папка с файлами "диплом", "диплом 2", "диплом 3", "диплом финальная версия", "диплом финальная версия 2", "диплом финальная версия 2 с правками"?..
![]() |
программирование - это в каком-то смысле написание текстов
разработка электроники и конструкторской документации - тоже
потеря данных (случайное удаление не того, затирание и т.д.)
отсутствие истории изменений
необходимость отката к предыдущим версиям
синхронизация работы команды
управление правами пользователя
необходимость параллельной разработки
автоматизация
появились в 1970-е годы (SCCS)
используются подавляющим большинством программистов
мы будем работать с git
де-факто стандарт в мире программирования (80..95% рынка)
используется для хранения и управления ядром Linux
бесплатный и открытый
![]() |
в базе - это консольная утилита
имеет множество графических оболочек (gitk, git-cola)
имеет множество web-надстроек (github, gitlab)
зачастую встроено в IDE
программный код катамарана
данное учебное пособие
создается локально
просто папка с подпапкой “.git”
хранит версии проекта
может быть клонирован
может взаимодействовать с другими репозиториями
$ git clone <адрес>![]() |
git log
git-cola
web-версия
основной конструктивный элемент
снимок состояния репозитория
имеет текстовое описание
может иметь родительские коммиты
может иметь дочерние коммиты
$ git add <filename>
$ git commit -m "Текст коммита"![]() |
Атомарность
не должно быть коммитов “добавлен расчёт корней квадратного корня и исправлены опечатки”
названия веток пишутся на английском языке, начинаются с маленькой буквы, слова разделяются нижним подчеркиванием: “replace_ldo”
описания коммитов начинаются с большой буквы, продолжают фразу “Если применить этот коммит то будет…” и не заканчиваются точкой: “Добавлена ссылка на автора исходного текста”
git config --global user.name "Ваше Имя"
git config --global user.email "ваша@почта.com"все ваши коммиты локальны, т.е. происходят только в вашем репозитории
для отправки ваших коммитов требуется выполнить команду
$ git pushдля обновления репозитория, можно получить данные с сервера командой
$ git pullобъединяет несколько коммитов
имеет название
cоздаётся из коммита-родителя
может слиться с другой веткой
обновляется из удаленного репозитория
обновляет удаленный репозиторий
$ git branch <branchname>
$ git checkout <branchname>![]() |
$ git push
fatal: The current branch mnc has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin mnc
To have this happen automatically for branches without a tracking
upstream, see 'push.autoSetupRemote' in 'git help config'.
Merge requests
New merge request
Выбрать "Source branch" (ваша) и "Target branch" (main)
Нажать кнопку "Compare branch and continue"
Далее опционально - заполнить поля
Нажать кнопку "Create merge request"
зачем нужны системы контроля версий
GitLab
основные понятия git: репозиторий, commit, push, branch


Как работать с gitlab через ssh | https://docs.gitlab.com/ee/user/ssh.html |
Книга "ProGit" | https://git-scm.com/book/ru/v2 |
коммиты должны быть атомарны
не должно быть коммитов “добавлен расчёт корней квадратного корня и исправлены опечатки”
названия веток пишутся на английском языке, начинаются с маленькой буквы, слова разделяются нижним подчеркиванием: “replace_ldo”.
описания коммитов начинаются с большой буквы, продолжают фразу “Если применить этот коммит то будет…” и не заканчиваются точкой: “Добавлена ссылка на автора исходного текста”
$ git clone http://sdb.smtu.ru/gitlab/marinerobotics/lesson-02.gitсклонировать репозиторий
создать новую ветку, используя ваши ФИО
отредактировать файл README.md
сделать commit и push
проконтролировать появление ветки на gitlab
сделать merge request в gitlab
задача со звёздочкой: поработать не через логин-пароль а через ssh