Git за 100 минут. Что такое СКВ?
Всем привет! Меня зовут Андрей Алёхин, я преподаватель школы современных технологий. Мы начинаем курс «Git за 100 минут». Всего будет 5 занятий, примерно по 20 минут каждый. На курсе мы рассмотрим: как установить git, как его настроить, изучим основные команды работы с git-ом; поговорим о графических интерфейсах. Научимся пользоваться git-ом на достаточном уровне, чтобы внедрить его в свою жизнь и значительно ее облегчить.
Итак, начинаем первый урок. Сегодня мы рассмотрим, что такое git, как его ставить.
Git – СКВ – система контроля версий. Итак, что такое СКВ. Представьте, когда ее не было, данные сохраняли достаточно примитивно (да и сейчас, если честно, так делают). Например, у вас есть сайт, верстка сайта. Вы активно ведете разработку этой верстки и т.д. и т.п. Если вы занимаетесь этим более-менее профессионально, вы обычно делаете back-up своей верстки. То есть сверстали часть верстки, все работает, все отладили, скопировали в папочку 2. «Версия 1» - только что сверстанная. В файле «Версия 2» вы уже докрутили JS, вставили дополнительные формы, анимации и т.д. Проходит немного времени, вам предоставляется свободная минутка докрутить какие-то «клевые плюшки», в AngularJS. Это уже серверный проект пошел, докрутили, верстка растет – «Версия 3». Потом четвертая версия проекта – «Версия 4».
В итоге, у вас, если вы занимаетесь версткой или программированием, таких папочек появляется уже много. Если вы заморачиваетесь, плотно это делаете, то вы не просто копируете его в папки, а еще и даты ставите («10.03.15»). И у вас папочка с датой, с названием. Таких папочек может быть много. А потом вы вспомнили: «Надо мне вернуться в папочку три, открыть там index.html. Скопировать оттуда маленький кусочек, (который вы случайно удалили в этой вашей версии), перенести его в папочку 4 и добавить кусочек того же индекса». Потом вас кто-то отвлек: позвали или вы сами на что-то отвлеклись, мало ли что произошло. Забыли, что у вас в редакторе открыт не index в «Версии 4», а index.html в «Версии 3». Спокойно продолжили в нем свою работу с полной уверенностью, что вы работаете над production «Версией 4». Докрутили, сохранили. И потом поняли, что вы работали вовсе не в production версии, а в «Версии 3», в вашем back-up-е. В итоге вы потеряли ваш индексный файл, который вы на тот момент перезатерли новым содержимым и в production версии еще не сделали. Может так получиться: и здесь испортили («Версия 3») и здесь работа прошла даром («Версия 4»).
Вот это – примитивная система контроля версий, ручная, при помощи клавиатуры, мышки, ctrl+c-ctrl+v и собственной памяти. Минусы системы очевидны: элементарно можно запутаться. Во-вторых, даже если сейчас куча облачных сервисов, вы все равно так или иначе привязаны к месту своему. Не бесконечны же эти ваши облачные сервисы, столько папок плодить. Перед клиентом, например, будете что-нибудь демонстрировать, и судорожно перебирать все папки: «Ну где же это было?!». Поэтому мануальный режим очень неудобный. А представьте, если несколько людей должно над проектом работать. То есть, вы верстальщик, кто-то – программист, кто-то чисто на JS пишет. Вам всем надо в одном проекте работать. Надо расшаривать папку, всем доступ давать. А если захочется зайти в индексный файл двум пользователям? Что тогда? Он же уже будет открыть для редактирования, как его сохранить? Более того – двое открыли, один поработал – сохранил, другой поработал – перезатер все, что первый делал. То есть это не подходит для групповой работы ни в каком формате. Просто невозможно организовать ее правильно. «Косяков» у этой версии много. Но это все равно какого-то рода система контроля версий. То есть, мы контролируем: back-up-ы делаем, версию обновляем и смотрим на наш проект. Те, кто поумнее в названиях пишут даты. Некоторые просто пишут: «Новая папка», «Новая папка2», «Новая папка3», но это совсем трэш.
Подведем итоги: git, git - СКВ. А что такое СКВ? Это любой педальный механизм или программный, который позволяет вам делать back-up-ы ваших файлов, вести учет какой-то. Того, что вы делаете на компьютере. Какие дела с вашими рабочими проектами.
Какие бывают СКВ?
Собственно, мы рассмотрели локальную – «педальный» механизм. Это даже не СКВ, а способ back-up-а файлов. А теперь поговорим про СКВ. Существуют автоматизированные СКВ, которые также делают «комиты», то есть комментируют файлы. Локальные работают следующим образом: на вашем компьютере создается небольшая БД (база данных), где хранятся все изменения ваших файлов, и эти файлы обновляются, контролируются. Вы что-то делаете, крутите. Грубо говоря, это автоматизированный процесс, представленный на прошлом слайде. Что-то изменили, сохранили, локальную версию сделали, проконтролировали и дальше. Программный вариант того, что мы смотрели ранее. Минусы те же самые – отсутствует общая работа.
Централизованная, более продвинутая версия, чем локальная. Ставится какой-то сервак с такой же БД, и на ней все хранится. И уже клиенты – отдельные компьютеры – подключаются к этому серваку, к этой общей БД. Могут смотреть, что там происходит, скачивать себе этот репазиротий с файлами и спокойно с ними работать. Один большой косяк – это все клиенты, но никак не серверы. То есть по факту, как только ложится сервак (перестает работать) - работа прекращается на всех клиентах. Они ничего сделать не смогут. Один из самых больших минусов, потому что при малейшей проблеме с интернетом на сервере, малейшем программном или аппаратном сбое - и всё. Ваша СКМ вообще не работает. Вы, конечно, сможете локально что-то поковырять, но сохранить изменения вы не сможете, потому что сервак лежит.
Децентрализованная СКВ – самая клевая. Почему? Потому что она совмещает «фишки» двух предыдущих. Она представляет из себя возможность подключиться к серваку, забрать файлы и создать свой локальный репозиторий, то есть создать свою локальную копию сервера и делать в ней все, что угодно. То есть подключение к интернету уже не нужно, мы работаем в локальной версии. А тогда, когда нам будет необходимо закинуть все это на удаленный сервак, мы просто подключаемся к интернету и закидываем на сервак. То есть, децентрализованная – система, которая позволяет нам держать локальную копию сервера. Мы работаем локально, но при этом можем забирать информацию с сервака.
Подробную информацию про git и работу с этой системой Вы можете найти по ссылке