Функции и особенности git

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

Проще всего объяснить что такое git, через те функции которые он предоставляет своим пользователям.

При помощи git, вы можете:

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

Посмотрите на эту диаграмму, на которой видна последовательность коммитов какого-то репозитория.

Изначально был первый коммит C0, в нем содержался какой-то набор файлов. Далее сделали ряд изменений и создали новый коммит С1, унаследованный от С0 и содержащий все эти изменения. Дальше тоже самое было с коммитом C2, и на текущий момент в репозитории находится набор файлов описываемый коммитом C3 и до тех пор пока кто-то обладающий правами загрузки на данный репозиторий, не загрузит что-то новое, коммит C3 - будет текущим и самым актуальным.

Еще один момент на который надо обратить внимание, текущий коммит С3 называется "main" именно этот набор файлов будет скачан по умолчанию, когда вы будете копировать к себе удаленный репозиторий.

Давайте рассмотрим еще один рисунок описывающий ветвление.

Предположим, что команда разработчиков выпускает, какой-то программный продукт. К примеру, первая стабильная версия была в начальном коммите C0, затем на его основе сделали какое-то развитие функциональности программы и функциональность С1 предоставили пользователям. Пользователи нашли несколько ошибок в программе и также захотели некоторые новые функции. Команда разработчиков, приняла эти ошибки и запросы на добавление функций в работу и разделилась на две группы. Одна группа пошла фиксить баги (исправлять ошибки), а вторая группа пошла добавлять новую функциональность. И чтобы не мешать друг другу, эти группы разделили один поток создания программы на две ветки. В одной ветке появился коммит С3, с исправленными ошибками версии С1, а во второй ветке коммит С2, с новой функциональностью. И вот когда оба этих коммита были протестированы, было произведено слияние веток и появился новый общий коммит С4, в которому были и исправлены баги С1 и добавлены новые функции С2, которых хотели пользователи. Разумеется, такое легкое слияние веток возможно только в случае если программа написана архитектурно правильно, т.е. модульно и в соответствии с паттернами промышленного программирования. Иначе коммиты С2 и С3 могут конфликтовать друг с другом и корректного слияния может не получиться.

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

results matching ""

    No results matching ""