Cистемы контроля версий и Github


Системы контроля версий (на языке потенциального противника Version Control System или очень часто встречающиеся сокращение VCS), позволяют контролировать изменения в файлах, фиксировать состояния программы (аналог создания папки), и в случае необходимости откатываться, более того в любой момент можно глянуть посмотреть, как оно было раньше. Ну и не менее если даже не более важно, это то, что vcs позволяет организовать безболезненную работу над проектом сразу нескольких человек.

Надо понимать, что vcs в первую очередь сделаны для отслеживания изменения в текстовых файлах (код программ полностью попадает в эту категорию, то что он, например, хранится в MainWindows.cs, не делает этот файл чем-то особенными, это все еще просто файл с текстом). Отслеживание идет на уровне строк.

Как следствие использовать контроль версий для docx файла так же эффективно, как и для текстовых файлов не получится. Так как docx-файл представляет собой бинарные данные, то любое изменение в файле будет восприниматься системой, как полное изменение файла. При наличии некоторого навыка это все равно удобнее чем создавать копии документа на каждый чих. Говорят, у фотошоперов есть свои системы контроля версия специально под psd форматы, но то мне не ведомо.

Сама по себе vcs представляет собой консольное приложение, которое необходимо поставить себе на компьютер и добавить в PATH (делается обычно прям при установке).

Самая популярная система это git

есть еще достаточно распространенный mercurial

и все еще живой Subversion (или сокращено SVN)

SVN предлагает немного другой подход к организации версирования, но в целом проиграл технологическую гонку с git и mercurial. Так же стоит знать, что, если вы вдруг будете искать работу и там будут требовать знание SVN бегите от этой вакансии как от огня, с вероятностью 95% там будет код на древних технологиях, и скорее всего недостаточно компетентные коллеги.

Устанавливаем GIT

Мы будет работать с git. Поэтому будет его и ставить

Идем сюда: https://git-scm.com

и качаем:

устанавливаем:

ставим галки:

далее

потом нам предлагают редактор по умолчанию (нам скорее всего не принципиально):

но по умолчанию там стоит vim, это очень своеобразный текстовый редактор, уже десятилетиями поднимается вопрос как выйти из vim https://tproger.ru/news/how-to-exit-damned-vim/, так что наверное имеет смысл поставить какой-то другой. Я, например, люблю sublime, но чет он у меня в списке не выбирался, поэтому я указал путь к нему явно:

если что-то не будет работать, это всегда можно будет поменять. Далее ничего не меняем:

и ждем

ок:

Проверяем что git установился успешно

Жмем Win+R

вводим cmd и жмем Выполнить, откроется консолька, введем в ней

git --version

должны увидеть что-то в этом роде

Если все так значит вы успешно установили git.

Кстати, чтобы не возвращаться к этому моменту, потому что я не помню в какой момент это может помешать, запустите консольку и пропишите сразу настройки гита

git config --global user.name "your_username"
git config --global user.email "email@yandex.ru"

ну и понятно, в your_username укажите, свое именование и свою почту.

Подключаем visual studio проект к git

Дело не хитрое, открываем проект, и кликаем сюда:

собственно, и все, можно сходить в папку с проектом:

  • папка .git – тут собственно будет хранится отслеживаемые изменения и всякая о метаинформации, обычно нет необходимости лазить в эту папку
  • .gitignore – тут указывается какие файлы не надо включать в отслеживание версий, например обычно не включают *.exe файлы, иногда имеет смысл в нем что-то поправить
  • .gitattributes – всякие специфичные настройки для файлов, например можно явно отметить какой-нибудь файл как бинарный, и система контроля версия перестанет его отслеживать

вернемся в студию, посмотрим в обозреватель решения:

теперь если в каком-нибудь файле чего-нибудь поменять, я, например, решил подправить MainWindow.xaml.cs

можно нажать правой кнопкой на файл, и узнать, что именно изменилось:

у меня какая-та старая версия проекта открылась, но суть не меняется, слева то, что было, справа – то что стало:

чего-нибудь еще поменяв, допустим:

ну и собственно самое важное, фиксирование изменений. То есть устанавливаем точку от которой будут отсчитываться последующие изменения. Делается это очень просто.

Кликаем правой кнопкой на любой файл и выбираем зафиксировать:

видим открылась странная вкладка

пишем, например:

Убрал старый код, поправил комментарии

и фиксируем:

появится что-то вроде:

что будет свидетельствовать что все ок.

Внизу появится сообщение:

пока проигнорируем его.

Переключимся на обозреватель решений и увидим, что все файлы помечены замочком, что означает, что изменений относительно последней фиксированной версии нет.

Можно сходить посмотреть историю изменений каждого файла:

любую версию можно открыть и изучить что же там было.

Кстати этот Добавьте файлы проекта. – это первая фиксированная версия, которую студия создала на автомате когда мы нажали кнопку Добавить в систему управления версиями. Ну и судя по всему это «надмозг» перевод фразы с инглиша на русский Add project files. Короче они там тоже не очень по нашему =)

Регистрируемся на github

Github – крупнейший сервис для хранения проектов для разработчиков. Наличие активного аккаунта на нем +100 баллов при прохождении собеседования на программиста. Потому что

  • раз – значит, что вы умеете в git
  • два – вы увлечены программированием
  • три – можно сразу посмотреть как вы пишите код [хотя может оно лучше и не надо >_>]

если же вы очень-очень стесняетесь своего кода, то можно делать приватные репозитории

Короче регистрируемся https://github.com, сначала важно выбрать себе имя.

для моих тестовых целей, все были уже заняты >_>

короче разобравшись с именем, попадем сюда, надо нажать кнопку Verify

поставить лошадку на ноги

и нажать Done, затем выбрать бесплатный план и нажать Continue

потом чего-нибудь ответить:

Отлично все сделано!

Создаем проект на github

Идем на главную страницу, которая будет выглядеть как-то так и жмем на ней кнопку New Repository (всякий git-проект принято называть репозиторий)

да елки-палки

идем на почту и подтверждаем:

ок, теперь нас снова сюда отправили

снова жмем New Repository, и снова придумываем имя (╯°□°)╯︵ ┻━┻ Так как проект у нас по сути уже есть остальные галки не трогаем, по желанию можно заполнить поле Description

короче нажав Create repository, попадаем сюда:

Это абсолютно пустой репозиторий, тут описано чего-надо сделать на своем компьютере чтобы связать локальную и сетевую версию.

копируем уникальный адрес нашего репозитория

идем в студию, переключаемся на вкладку Team Explorer и тыкаем по инструкции

открываем узел Отправить в удаленный репозиторий и тыкаем Опубликовать репозиторий Git:

жмем опубликовать

откроется окошко:

вводим свои данные, тыкаем Login и ждем.

Сигналом что все завершилось успешно, будет 0 в строке статуса:

теперь можно сходить на github.com, выбрать свой проект:

и полюбоваться его содержимым

Как жить дальше

Теперь когда вы развернули проект, надо запомнить процесс разработки с системой контроля версий:

1. Вы делаете изменения в коде, затем фиксируете их

2. Затем вы вводите сообщение об изменениях, которые вы хотите зафиксировать

3. Вы отправляете изменения на github, нажимая синхронизировать

сначала тут

а потом тут:

либо попадая на эту же страницу, так:

Собственно так и жить. Только теперь вам не страшно что-то сломать, нет необходимости копировать папки, и вы можете отслеживать динамику изменения своего кода.