Similar presentations:
Программирование на языке Java. Версионность
1.
Программированиена языке Java
Версионность
2.
Что надо было сделать?Установить Postgres (сервер + клиент) Для чего
он?
Установить GitBash
3.
GitBash, расскажите, что вышло.Что это такое?
Зачем его устанавливали?
4.
Работа Васи с кодомНаписать код.
Создать папку 2018-06-01
Внести изменения в код
Создать папку 2018-06-25
Если что-то сломалось при обновлении,
развернуть одну из старых папок. Извлечь код
и развернуть его.
5.
Какие проблемы вы видите?Написать код.
Создать папку 2018-06-01
Внести изменения в код
Создать папку 2018-06-25
Если что-то сломалось при обновлении, развернуть
одну из старых папок. Извлечь код и развернуть его.
6.
ПроблемыНадо всё делать руками
Процесс не формализован (названия папок, пути)
Код который не доведен до продакшна надо называть,
хранить как-то иначе
Код в каждой папке ничего «не знает» о коде в
другой папке. А следовательно:
Нет истории изменений
…
7.
Вася запустил стартап VasyaSoftСнял офис, принял на работу 2 разработчиков.
Передал им код.
1 программист работает над интерфейсом. 2 –
делает фичу для API.
Оба программиста отправляют Васе
обновления, он их собирает («билдит») и
готовит поставку.
8.
ЗадачаК предыдущей задаче добавить:
Программа должна вывести самое длинное слово и его
длину.
Пример:
Введите
Вася
Самое
строку:
пошел
гулять
длинное слово: гулять, длина 6
9.
Картинка ДжекиЧан.jpg10.
ПроблемыПри командной работе над продуктом
«папочно-файловый» подход превращается в
ад.
Как совместить код нескольких программистов?
Как проверять код который внес один из
программистов?
…
А если работать удаленно?
11.
ВерсионностьДля решения подобных проблем были
придуманы системы управления версиями
(VCS)
Git
Subversion (SVN)
TFS
Mercurial
И другие
12.
Итак, GitПочему мы будем использовать Git?
Он модный
Очень популярен
Есть доступные всем репозитории
GitLab.com
GitHub.com
BitBucket.com
13.
А что такое GitBash?GitBash – программа (git клиент) для
Windows, которая позволяет выполнять
команды для управления кодом.
В Linux подобных системах используется
git клиент
sudo apt-get install git
14.
Устанавливаем git.Кто не установил git клиент – делаем это сейчас…
После установки
Запускаем командную строку
Пишем
git version
Должно появиться что вроде
git version 2.19.2.windows.1
15.
ХранилищеХранилище (репозиторий, проект) – это
место, где хранится код. В нашем случае
хранилище будет располагаться на сервере
github.com
https://github.com/JavaItAcademy/itacademy
Лучше использовать подход один проект –
одно хранилище
1. Обучение, 2. «Работа на дядю» итд
16.
Клонировать репозиторийЕсть 2 способа.
Скачать проект как zip (нам не интересно)
Склонировать через git
Запустить gitBash (или командную строку)
Перейти в нужную папку (куда будете разворачивать проект),
напр D:/JavaWorks/
Выполнить команды
git init
git clone https://github.com/JavaItAcademy/itacademy
Проверить создались ли файлы
17.
Работа с проектомТеперь проект развернут у вас на компе.
Открыть его через IDE
Настроить Settings в IDE (File – Settings –
Version Control – GitHub – Add account)
18.
Архитектура vcsЕсть 2 хранилища
Удаленное (в нашем случае на github)
Локальное (на вашем компе)
Обычное изменение кода не хранится в
локальном хранилище! Это «просто код» не
помещенный в репозиторий.
Для того чтобы сохранить код в локальном
репозитории нужно выполнить команду commit
19.
ВеткиВетка (branch) это «направление разработки».
В проекте может быть много направлений.
production- промышенная (master, иногда
developer)
«Фича для Алексея Петровича»
«Работы по ssh сертификату»
«Проверка распараллеливания»
«Песочница для unit тестов» итд
20.
В IDEСоздать branch со своим именем (нажать на
Git:master в правом нижнем углу – new Branch)
При создании ветки в IDE вы автоматически
переходите в нее (переключение по ветке - checkout)
Создать [МоёИмя].java файл
Сделать commit (сохранить изменение в локальном
репозитории) в IDE.
В окне выделить только тот файл, который вы добавили.
Добавить комментарий.
21.
Удаленный (remote) репозиторийИспользуется 3 команды для работы с удаленным
репозиторием
fetch – обновить (синхронизировать) ссылки
push – поместить код из локального хранилища в
удаленный (отправить свои изменения команде)
pull – поместить код из удаленного хранилища в
локальный (забрать себе изменения команды)
22.
ЗадачаСкопировать свой файл [МоёИмя].java в
удаленный репозиторий, в ветку developer
Перед копированием забрать себе изменения,
которые сделала команда
Внести изменения в свой файл. Снова
отправить их на remote
Изменить чужой файл. Но изменения вывести в
ветку fun на remote
23.
Частые проблемы в gitНе актуальный локальный репозиторий (remote «ушёл
вперёд», а вы пытаетесь обновить туда данные с local)
Решение – сделать pull (забрать всё что есть в remote)
Конфликт – система не может сделать push или pull т.к
код в remote и local невозможно автоматически
сдружить.
Решение – resolve conflicts
Line endings – git считает что файл новый потому что в
linux и win разные символы для переноса строки
Настроить endings через settings в IDE
24.
Узнаем по ходу сессииСлияние веток
Удаление веток