О том, что такое Git, написано очень много скучнейших книг, сайтов, статей и видеокурсов, которые своими заумными объяснениями слабо проливают свет на предмет, но отлично лечат от бессонницы. Сегодня же я расскажу, как использовать эту штуку, которую даже не все программисты понимают, обычному пользователю для самых простых нужд, далёких от "контроля версий" и "нелинейной разработки".
Какие проблемы мы будем решать:
- В папке был вордовский (или экселевский) файл с очень важными данными, а теперь он куда-то пропал. Или случайно удалился в корзину, а потом случайно же удалился из корзины. Или в один прекрасный день перестал читаться, при открытии пишет ошибку.
- Другой важный файл, но его случайно затёрли - сохранили другой файл под его именем.
- Флешка уже давно барахлила, а теперь файлик на ней не открывается.
- Писал внешнюю обработку, отключилось электричество, включил компьютер, но обработка теперь не открывается, пишет "Неверный формат данных", а там - годы работы (у многих программистов на этом месте побежала слеза; у автора этих строк - целый поток слёз).
- Пишу ТЗ, нужно постоянно сохранять его версии, надоело копировать файл под тем же именем с номером версии.
От всех этих болезней поможет вылечить Git. Если говорить простым языком - это такая штука, которая сохраняет копии ваших файлов. Но делает это удобно, быстро и безошибочно, если правильно с ней работать.
Большинство вышеупомянутых книг и курсов по Git учит работать с ним из командной строки. Ни в коем случае так не делайте, если только вы не специально обученный программист и не собираетесь использовать его в команде на проекте!
Качаем
Скачиваем вот такую программку:
Устанавливаем
После того, как скачали, жмём на файле правой кнопкой и в меню выбираем "Запуск от имени администратора":
Рис.1
Откроется окно установки. В нём вам нужно постоянно нажимать на кнопку "Next". Только на одну эту кнопку! Нажать нужно будет несколько раз, в окне будут мелькать всякие непонятные слова - ни в коем случае не читайте их и не меняйте никакие настройки, только нажимайте на одну вышеупомянутую кнопку. В самом конце появится кнопка "Finish", нажмите на неё. Всё, программа установлена.
Готовимся
Прежде, чем мы начнём настраивать нашу программу, нам нужно понять, что именно мы хотим сберечь, какие файлы. Сразу скажу - настроить хранилище так, чтобы оно сохраняло весь диск C и диск D в придачу не получится. Дело в том, что хранилище сохраняет КАЖДЫЙ файл в папке. Поэтому если у вас в папке рядом с вордовским файлом, который нужно не потерять, лежат оставленные на всякий случай реестры по выплате ЗП из 1С, прошлогодние выгрузки клиент-банка, фотки и видео с корпоратива и только что скачанный новый сезон "Игры престолов", то ваше хранилище рискует забить всё свободное место на диске. Ещё хуже, если рядом с нужным файлом лежит папка с базой 1С, с которой вы работаете - каждый раз при выключении 1С файл базы будет незначительно изменяться, из-за чего каждый раз хранилище будет его целиком копировать.
Поэтому очень важно правильно организовать ваши файлы. Определитесь, какие файлы вам точно нельзя потерять, а какие не несут особой ценности.
Покажу на примере. Вот одна из папок, в которой хранится работа по клиенту:
Рис.2
Что мы здесь видим? Во-первых, сразу видны папки с базами 1С. Для баз 1С есть гораздо более подходящие способы сохранения данных, поэтому в нашем хранилище эти папки не нужны. В папках "Архив" и "Поставка" хранятся неактульные файлы или файлы, которые можно получить из других источников, т.е. ничего суперважного. Дальше идут файлы - типовые обработки, какие-то скриншоты, какие-то временные заглушки и файлы, полученные по почте. Тоже ничего важного и невосстановимого. А всё важное и требующее внимания хранится в папке "Хранилище", там несколько внешних обработок и вордов-экселей, которые восстановить неоткуда.
Размер всей папки - 6 гигабайт, размер папки "Хранилище" - 1 мегабайт, в 6000 раз меньше!. Почувствуйте разницу.
Поэтому важно понимать, что настраивать хранилище нужно именно на папку, все файлы которой очень нужно сохранить. Если у вас в папке лежат вперемешку важные и не очень важные файлы (или файлы, которые можно легко восстановить из почты, с других компьютеров или ещё откуда) - создайте внутри этой папки ещё одну, переложите в неё только важные файлы и уже на неё настраивайте хранилище.
Ещё один критерий - частая изменяемость важных файлов. Например, фотки с корпоратива тоже важны и их тоже нельзя потерять. Но настраивать на них хранилище бессмысленно, проще один раз скопировать их на флешку/домашний ноутбук/на компьютеры коллегам.
Настраиваем хранилище
Настройка выполняется один раз, поэтому можете не запоминать порядок действий, просто следуйте данной инструкции.
Для примера я создаю хранилище для вот такой папки:
Рис.3
В меню "Пуск" - "Все программы" после установки программы появился раздел Git. Внутри будут такие ярлыки:
Рис.4
Сейчас и вообще всегда вам будет нужен только тот, который я обвёл красным - Git GUI. Нажмите на него и увидите такое окно:
Рис.5
Нажмите на верхнюю синюю надпись - "Create New Repository". Появится такое окно:
Рис.6
Вначале нажмите на кнопку "Browse" (на картинке она под цифрой 1). Появится окно выбора папки, файлы в которой вы хотите сберечь. Выбрали папку, жмём кнопку "Create" (на картинке - 2). Теперь мы видим вот это:
Рис.7
Всё, хранилище создано.
В верхнем меню выберем пункт Edit, в появившемся меню выберем Options:
Рис.8
Открылось окно настроек. Заполните поля вверху как показано на картинке:
Рис.9
Жмём ОК, настройка завершена.
Несколько хранилищ
Если вам нужно оберегать несколько папок (а так, скорее всего и будет), то вам нужно будет создать несколько хранилищ. Я имею в виду не вложенные папки, а отдельные. Т.е. если вы хотите создать хранилище для папки D:\Test, то все подчинённые папки тоже войдут в это хранилище, нет нужды создавать отдельное хранилище для папки D:\Test\Новая. Но если нужно сохранить ещё и папку D:\Clients, например, то нужно будет создать ещё одно хранилище.
Порядок действий тут будет такой же, как в предыдущем разделе - открываете Git, Жмёте Create New Repository, выбираете папку, которую нужно сохранить и так далее. Отличие заключается в том, что НЕ нужно будет выполнять настройку на рисунках 8 и 9.
Работа с хранилищем
Опять запустим Git GUI, как это уже было показано на рисунке 4.
Откроется знакомое нам окно, но выглядит оно немного по-другому:
Рис.10
Теперь тут появилась ссылка на наше хранилище. Нажмём на неё и увидим окно, которое уже видели на рисунке 7. Посмотрим на него поближе.
Вверху справа, под жёлтой полосой ненужное нам поле, не обращаем на него внимания.
Вверху слева поле Unstaged Changes. Тут будут перечислены файлы, которые были добавлены в папку, изменены или удалены из папки со времени последнего сохранения в хранилище:
Рис.11
Справа снизу видим раздел Staged Changes. Тут будут файлы, которые уже готовы к сохранению в хранилище. Тут пока ничего нет, но мы сейчас начнём жать на кнопки и тут обязательно что-то появится:
Рис.12
Наконец, снизу до правого края - кнопки управления и поле для комментария:
Рис.13
Вся работа с хранилищем заключается в нажатии на кнопку Stage Changed, после которой файлы из верхнего левого поля перейдут в нижнее левое:
Рис.14
... написании комментария в поле внизу и нажатии на кнопку Commit:
Рис.15
Вот и вся работа с хранилищем!
Ещё раз порядок действий:
- Изменили файл, сохранили, закрыли и теперь хотим сохранить его в хранилище, чтобы не потерять.
- Открываем Git GUI.
- Жмём на кнопку Stage Changed.
- Пишем комментарий в нижнем поле.
- Жмём кнопку Commit.
Правда, ничего сложного?
По поводу комментария - комментарий нужно писать обязательно, без него не сохраняется. Можно, конечно, ставить просто единичку или букву, а можно расписать - что было изменено. Ещё можно сюда вписывать номер версии - подойдёт, если вы пишете, например, ТЗ или какую-то внешнюю обработку.
Всё, что ниже, можно не читать, пока файлы на месте и никаких проблем с ними не возникает. Ну или пока не возникнет необходимость посмотреть предыдущую версию файла.
Страховой случай
И вот тот чёрный день, к которому мы так готовились, настал.
Файл исчез и его нужно восстановить:
Рис.16
Опять запускаем наш Git GUI. В уже знакомом нам окне мы видим в поле Unstaged Changes наш файл. Система говорит нам, что он удалён. Спасибо, мы заметили. В верхнем меню нажимаем на первый пункт Repository. В появившемся меню выбираем Visualize master's History:
Рис.17
Открывается большое и страшное окно с кучей непонятных слов:
Рис.18
На самом деле ничего страшного тут нет, можете вообще не смотреть никуда, кроме верхнего левого угла. Видите светофор? Нас интересует жёлтая точка с зелёной надписью master - это последнее сохранённое состояние, проще говоря - последняя живая копия нашего файла. Кстати, видите надписи правее от этих разноцветных точек - в.1, в.2, в.3? Это те комментарии, которые вы оставляете при сохранении хранилища (рисунок 15). Теперь понимаете, почему лучше писать осмысленные комментарии?
Итак, на последнем синем комментарии (у меня это в.3) нужно нажать правой кнопкой. Обратите внимание - именно на нём, а не на master. Нажали на комментарии правой кнопкой и в меню выбираем Reset master branch to here:
Рис.19
Выскакивает окошко, в котором мы выбираем нижний пункт и жмём ОК:
Рис.20
Теперь окно приняло вот такой вид:
Рис.21
Т.е. красная точка над master исчезла. Всё, готово!
Идём в нашу папку и видим:
Рис.22
Открываем его и видим:
Рис.23
Да, всё в порядке, это последняя версия файла.
Упражнение со звёздочкой
Если нужно не восстановить последнюю версию файла, а посмотреть-сохранить одну из прошлых версий, тогда нужно выполнить те же действия, только выбрать не в.3, а в.2, например. После того, как вы выполните все действия из прошлого раздела, окно примет такой вид:
Рис.24
А файл при открытии примет вид нужной версии:
Рис.25
Но здесь нужно быть внимательным. Так как файл, скорее всего, нужен нам не ВМЕСТО последней версии файла, а ВМЕСТЕ С ней, то нужно выполнить парочку дополнительных действий:
- Копировать полученный файл предыдущей версии в другую папку. Папка НЕ должна быть внутри папки с хранилищем.
- Опять выполнить все действия из предыдущего пункта, но на этот раз выбирать последнюю версию (в моём примере - в.3), чтобы вернуть файл к последнему состоянию. Если вы не выполните этот пункт, то потеряете все изменения, которые были сделаны после версии, которую вы восстановили (в этом примере - всё, что было после версии 2).
Заключение
Я постарался сделать эту инструкцию максимально простой и понятной для широкой публики. Поэтому тут нет углублений в теорию, сравнений разных программ для контроля версий, работы с командной строкой, тонкостей и приёмов в работе с Git.
Также Git тут рассматривается именно в контексте такой болезненной и всегда актуальной темы, как потеря данных, а не его применение в разработке на платформе 1С (доказательств того, что в этой области есть что-то лучшее, чем стандартное хранилище 1С, я ещё не нашёл, лет зе холивар бегин). Надеюсь, данное пояснение сняло половину назревавших комментариев :)