Независимо от выбранного языка или направления разработки, код, который пишет программист, остаётся обычным текстом, записанным в множестве файлов на диске. Эти файлы регулярно добавляются, удаляются и изменяются. Некоторые из них могут содержать сотни строчек кода, а другие тысячи. Файлы в тысячу строк кода вполне нормальное явление в программировании.

Пока проект состоит из пары-тройки файлов, его разработка не создаёт никаких сложностей. Программист пишет код, запускает его и радуется жизни. Клиент доволен, заказчик тоже. С ростом кодовой базы, появляются определённые неудобства, которые затем превращаются в реальные проблемы:

  • Как не потерять файлы с исходным кодом?
  • Как защититься от случайных исправлений и удалений?
  • Как отменить изменения, если они оказались некорректными?
  • Как одновременно поддерживать рабочую версию и разработку новой?

Представьте, что ваш проект состоит из сотни файлов и десятков тысяч строк кода. Вы делаете какую-то задачу, в процессе меняете 15 файлов и 300 строк кода и вдруг, становится понятно, что эта задача больше не актуальна. На этом моменте нужно вернуться к состоянию исходного кода, которое было до изменений. И это только один из множества вариантов событий. Другой вариант — в процессе работы над кодом стало понятно, что нужно срочно внести исправление в рабочий проект (сайт). Новую задачу в нерабочем состоянии выкладывать на сайт нельзя, а это значит, что исправление нужно вносить в ту версию кода, которая была до начала реализации новой задачи.

Самый простой вариант решения, указанных выше проблем — копирование директорий. К сожалению, такой подход обладает только недостатками. Перенос изменений из одной директории в другую возможен только полной перезаписью, так как точечные изменения отследить невозможно (только по памяти). Как только папок станет две, вы сразу начнёте путаться в них. И все равно этот способ никак не поможет работать над кодом одновременно двум людям.

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

К счастью, эту задачу решили ещё в 80-х годах. С тех пор инструментарий сильно развился и стал использоваться повсеместно не только для кода, но и, например, для написания и перевода книг. Решением является контроль версий. Выполняется он с помощью специальных программ, которые умеют отслеживать изменения кода. Вот некоторые из многочисленных возможностей данных систем:

  • Возврат к любой версии кода из прошлого
  • Просмотр истории изменений
  • Совместная работа без боязни потерять данные или затереть чужую работу

В этом курсе мы разберём общие принципы работы подобных программ, научимся работать с Git, а также познакомимся с важнейшим элементом работы с исходным кодом в современном мире — GitHub.

Сам курс не содержит практики, но предлагает задачки для самостоятельной работы. Он не пытается стать исчерпывающим руководством по Git, а представляет собой, скорее, краткий обзор для общего знакомства с темой и терминологией. Связано это с тем, что по Git создано немало интерактивных курсов, написано книг и статей, которые полностью покрывают все необходимые потребности. По ходу повествования в тексте будут встречаться ссылки на дополнительные ресурсы, которые помогут прокачаться в конкретных навыках.

В любом случае, лучший способ познавать системы контроля версий, в частности Git, это постоянная практика. Как минимум выполняйте все команды, которые демонстрируются в процессе курса.

Главный источник, помимо документации, для освоения Git — книга Pro Git

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →