Найти в Дзене
Дмитрий Дым

GIT

Давайте ка я немного расскажу вам про то, что такое git. Сначала немного сухости из википедии: распределённая система управления версиями. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года. Для чего же это нужно и как это работает? Программисты пишут код. Пишут его где? Правильно - на компьютерах. Давайте подумаем, к каким проблемам это все приводит. 1. Ну, первая, пожалуй, самая очевидная - комп или еще хуже, жесткий диск могут наебнуться. Тогда мы потеряем все, над чем работали. 2. Я работаю над кусочком программы, а мой коллега работает над другим кусочком этой же программы, но очень часто случается так, что мы должны использовать кусочки кода друг друга. Мне нужны кусочки его кода, а ему кусочки моего. Но как сделать так, чтобы мой код, который находится на моем компьютере появился на его компьютере и наоборот? Очевидно, я должен каждый раз ему его как-то передавать, а он мне. Немного ебала, учитывая то, что м

Давайте ка я немного расскажу вам про то, что такое git.

Сначала немного сухости из википедии: распределённая система управления версиями. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года.

Для чего же это нужно и как это работает?

Программисты пишут код. Пишут его где? Правильно - на компьютерах. Давайте подумаем, к каким проблемам это все приводит.

1. Ну, первая, пожалуй, самая очевидная - комп или еще хуже, жесткий диск могут наебнуться. Тогда мы потеряем все, над чем работали.

2. Я работаю над кусочком программы, а мой коллега работает над другим кусочком этой же программы, но очень часто случается так, что мы должны использовать кусочки кода друг друга. Мне нужны кусочки его кода, а ему кусочки моего. Но как сделать так, чтобы мой код, который находится на моем компьютере появился на его компьютере и наоборот? Очевидно, я должен каждый раз ему его как-то передавать, а он мне. Немного ебала, учитывая то, что мы меняем код по сто раз на день, и то, что я ему дал пару часов назад, может быть уже не актуальным. А теперь еще хуже - у нас целая команда разработчков, или еще хуже - целый трайб разработчиков (много команд). Все одновременно меняют кодовую базу. Это просто нереально что-то кому-то передавать.

3. Если мы работаем над одним участком кода одновременно, то у нас появляются конфликты. Я переделал строчку кода, а коллега ее и вовсе удалил. Что считается актуальным? Как это объединить в единое целое?

Эти проблемы решает "Система Контроля Версий". Git - это один из вариантов такой системы. Есть и другие, но git самый распространенный.

В системе контроля версий есть такое понятие как ветка.

Представьте, что вы разработчик, который начинает с нуля писать код. Вы накидали немного кода, и "сохранили" его в основную ветку (такая ветка называется master). Но эта ветка все равно пока что находится только у вас на компьютере. Тут приходят на помощь хостинги IT-проектов. Примеры таких хостингов: GitHub, GitLab, Bitbucket. Они позволяют загружать ваш код на сервера хостера, откуда ваш код может "скачать" любой ваш коллега. Делается это очень удобно - нажатием пары кнопок.

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

Осталось решить последнюю проблему: проблема конфликтов. Git помогает решать эти благодаря тем самым веткам. Дело в том, что всегда существует главная ветка (master) - в которой находится рабочий код. Если мы хотим сделать какие-то изменения, то мы отводим новую ветку от master. Это будет точная копия главной ветки (короче, все равно что сделать копию проекта, и работать с копией, а не с основным проектом). В своей ветке вы делаете изменения, которые вам нужны и потом "сливаете" их в основную ветку. Этот процесс называется merge (мёрж). Гит за нас автоматически применит изменения из нашей ветки (копии) к основной ветки. И если вдруг случится так, что гит обнаружит, что код в основной ветки уже кем-то другим был изменен, то выдаст нам конфликт, и заставит его решить. И только после этого, мы сможем слить наши изменения в основную ветку.

Подробнее можно посмотреть тут: https://www.youtube.com/watch?v=PEKN8NtBDQ0&list=PLY4rE9dstrJyTdVJpv7FibSaXB4BHPInb