Найти в Дзене
InformaticsEasy AI

Git по-русски для начинающих.

Оглавление

Git - это система версий. Для понимания можно сделать такой пример. Допустим вы создали текстовый файл, сделали запись и сохранили. Через 3 часа добавили или отредактировали какую-то информацию и опять сохранили. И так делали в течении недели. А потом вдруг вспомнили, что вам нужна та информация, которую вы удалили и вместо нее сделали другую запись. Как бы не было прискорбно, но восстановить ее не получится. Чтобы избежать такой проблемы есть 2 способа:

  1. Сохранять файл каждый раз как отдельный файл, как копию. Так вы сможете использовать информацию из старых файлов.
  2. Использовать систему контроля версий.

Так вот система контроля версий, сохраняет эти изменения. Просто нужно после каждого глобального редактирования (или достижения нужного результата) сохранять в этой системе. Так примерно работает git.

Давайте так, систему контроля версий я буду сокращенно называть VCS (Version Control Systems).

Как она работает? Где ее взять?

Где ее взять?

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

Официальный сайт git-gsm
Официальный сайт git-gsm

Как она работает?

Для работы с этой программой нужно уметь пользоваться командной строкой (терминалом). Если у вас нет этого опыта, тогда вам сюда.

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

В этой программе при начале работы с git будет создаваться отдельное хранилище (в скрытой папке). Сюда и будут складываться все ваши версии, эти версии одного и того же можно будет восстановить. То есть не вы создаете сами копии, а программа это делает за вас, но файл остается один, просто разных версий.

Начало работы.

Для того, чтобы хранилище (правильно его называют репозиторий, сокращенно репа) заработало, нужно его создать (инициализировать). VCS работает в папке, поэтому нужно создать папку в которой будет происходить слежка. Для этого заходим через терминал в созданную папку и в терминале (командной строке) пишем:

git init

Терминал самой программы git можно открыть через правую клавишу.

Нажать Git Bash Here
Нажать Git Bash Here

Откроется собственный терминал программы git.

Внешний вид терминала
Внешний вид терминала

Давайте создадим папку (test_git) с сделаем в нем VCS.

Инициализация VCS в папке.
Инициализация VCS в папке.

Всё. Простая команда git init создала систему контроля версий в этой папке. Вся информация по наблюдению будет хранится в скрытой папке .git. Если хотите удалить из этой папки систему наблюдения, удалите эту папку и всё.

Скрытая папка .git
Скрытая папка .git

А мы продолжим. Сейчас мы коснемся того, как работать в команде. У меня был небольшой опыт и его я как раз расскажу. (Главая вещь при устройстве на работу в области программирования - работа в команде).

Допустим у нас в команде работает три человека. Обычно проект разделяется на этапы и за каждый этап отвечает один (или несколько) человек. Мы сделаем проект гораздо проще: написать диплом. Один человек (Сергей) собирает текст, второй человек (Дмитрий) оформляет этот текст, третий (Марина) это тот кому нужен этот диплом или тот кто делает пометки к изменениям. Все эти люди находятся в разных городах.

Вы скажете так можно обойтись обычной электронной почтой. Да можно, но как уследить за всеми файлами, скачанными из этой почты, складывать их в разные папки с датами? Наверно можно найти такое решение, но оно некрасивое.

Итак, Марина создает папку и инициализирует в ней VCS и начинается работа. Марина создает пустой файл в этой папке. Теперь нужно сделать так, чтобы Сергей начал собирать информацию и сохранять в этот файл. Как это сделать?

Первое нужно добавить этот файл в репозиторий (сначала в локальный). Делается это тоже просто, командой git add. Но прежде (вдруг Марина это уже сделала) нужно проверить нужно ли добавлять, и есть ли что-то, что нужно добавить. Это можно сделать командой git status.

Проверка на новые элементы
Проверка на новые элементы

Ага, здесь видно что нужно добавить файл в репозиторий. Давайте добавим его как нам указывает сам git и сразу проверим.

Все ок, Добавился.
Все ок, Добавился.

Но и это еще не все. Теперь нужно этот добавленный файл еще не сохранен в репозитории, он сохранен для отправки туда. Закинем его в репозиторий командой git commit. Но здесь есть очень важный момент, при отправке файла в репозиторий, обязательно делайте комментарий к коммиту (желательно на английском, привыкайте).

Параметр -m - указывает на комментарий. То есть закоммитить с комментарием.
Параметр -m - указывает на комментарий. То есть закоммитить с комментарием.

Все, теперь наш файл лежит в локальном репозитории. Давайте изменим его содержимое и проверим статус.

Файл изменен.
Файл изменен.

Теперь его снова нужно поместить в репозиторий. Делаем по той же схеме, сначала добавим, потом закомитим, только изменим комментарий.

Измененный файл сохранен.
Измененный файл сохранен.

Вроде всё, но еще нет. Как получить этот файл Сергею? Для этого случая есть команда git push. Но просто так она не сработает. Марине нужно создать репозиторий где-то в сети интернет. Для этого есть распространенный сайт github.com. Как создать репозиторий на этом сайте? А мы пойдем дальше. Марина создала репозиторий на сайте github и теперь может сообщить Сергею, что можно приступать к работе. Но сначала, отправим локальный репозиторий на этот сайт:

Данные отправлены.
Данные отправлены.

Команда git push имеет обязательный параметр url (ссылка на репозиторий). Возможно перед первой отправкой вам потребуется ввести логин и пароль, как-то указать на то, что это ваш репозиторий.

Марина сообщает Сергею, что все готово. Можно забирать и работать. А также отправляет ссылку на репозиторий.

Действия Сергея.

Сергею нужно клонировать у себя этот репозиторий, то есть скачать все что есть и сразу создать у себя. Делает он это так:

Заходит в папку, где хочет создать папку с дипломом через командную строку или открывает git bash на этой папке. И все, что ему нужно это использовать команду clone.

Клонируем репозиторий
Клонируем репозиторий

Готово, теперь у нас есть копия репозитория с сайта github. Теперь можно работать - заполнять информацией.

К сожалению, все изменения он не сможет отправить обратно. Почему? Потому что он не добавлен в разработчики. Марина, как создатель, должна добавить его как разработчика, чтобы он смог также отправлять изменения на сайт.

Для этого Сергею тоже нужно зарегистрироваться на сайте. И скинуть свой ник.

Марина добавляет его в соавторы: открывает созданный репозиторий, вверху нажимает Settings:

Настройки репозитория
Настройки репозитория

Дальше нажимает Add people

Добавить соавтора
Добавить соавтора

Вводит данные Сергея и нажимает Select a collaborator above. На этом всё, теперь Сергей может присоединиться к проекту и отправлять свои изменения, используюя команды git status, git add, git commit, git push.

Также и нужно сделать Дмитрию и доавить его в проект.

Конфликты.

Так как теперь трое работают над проектом, случается вариант, когда все делают изменения в одном месте, и все втроем отправляют в онлайн репозиторий. У одного, который отправит первым все пройдет гладко, а у остальных могут выйти конфликты, потому как на сате уже есть изменения. Чтобы этого не произошло, обычно между разработчиками рапределяются обязанности, чтобы они не пересекались. Поэтому мы вначале распределили роли: сборщик информации, оформитель и редактор.

Чтобы не было конфликтов, сначала нужно получить последние актуальные данные с удаленного репозитория командой git pull. Работает она также как git push.

Получение актуальных данных с удаленного репозитория.
Получение актуальных данных с удаленного репозитория.

Вот так примерно работает репозиторий: сначала получаем актуальные данные через git pull, потом отправляем изменения через git push. Все по договоренности.

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

На этом всё. Удачи в изучении и тестировании.

Жду ваших комментариев и лайков (жмем не жалеем).

Понравилась статья - подписывайся.

Мои курсы по информатике, математике и Python.

Также приглашаю присоединится к моему сообществу в VK и каналу YouTube.