Или любого, кто хочет им пользоваться, но не знает как

Писать код — это сложно. За каждую минуту блаженства печати символов на компьютере и наблюдения, как он рендерит ранее не существовавшие вещи, полагается 10 минут уныния в попытках разобрать код и баги, не существовавшие ранее.

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

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

Примечание: этот урок для полных новичков… если у вас уже есть навыки, спокойно перепрыгивайте между разделами статьи.

Что такое Git?

Git — это распространенная система контроля версий для кода.

Описательно, но не очень полезно, правда? Давайте я поведаю вам настоящую историю:

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

Подождите.

Предыдущая версия. У вас ее нет, верно?

А что если каждое изменение, которое вы делаете в коде, можно было бы отследить — каждый символ и строку кода, которую вы добавляли или удаляли? Что, если бы вы могли сохранять свой код на каждом шагу работы?

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

Git - это машина времени для кода

Вот что делает Git. Он отслеживает и сохраняет версии всей вашей базы кода, позволяя с легкостью делиться ей с другими разработчиками (как с членами команды, так и с другими людьми по интернету). На практике, Git поможет вам:

  • Откатывать изменения в вашем коде (отменять их)
  • Разрабатывать новый функционал без ущерба для кода из «живой» версии проекта
  • Работать с другими разработчиками над одним и тем же кодом в одно и то же время, и не сойти при этом с ума.
  • Что-либо поломать станет очень проблематично

А что насчет… Github?

Новички обычно путаются в этом, так что давайте проясним.

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

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

Есть и другие подобные платформы вроде Gitlab и Bitbucket  - тоже отличные продукты. Github стал таким популярным благодаря своему интерфейсу, заточенному под командную работу, а также благодаря теплому приему со стороны огромного сообщества разработчиков открытого ПО.

По традиции мы будем использовать Github для этого урока, но то же самое можно реализовать, используя и другие платформы.

Как это работает

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

Но Git не сохраняет изменения в историю автоматически. Чтобы сохранить изменение в вашей истории, нужно коммитить изменения.

Коммит — это самый важный момент в Git. Коммиты позволяют добавить файл или сохранить измененные файлы в историю вашего репозитория.

Вы можете ввести сообщение для каждого из ваших коммитов, описывая, какие изменения он сохраняет в историю проекта. Очень важно, чтобы сообщения коммита были лаконичными и описательными. Никогда не делайте коммит без такого сопроводительного пояснения.

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

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

Давайте создадим репозиторий и сделаем тестовый коммит. Начните с регистрации аккаунта на Github, если у вас его еще нет.

Когда зарегистрируетесь, создайте новый репозиторий. Вы можете назвать его, как хотите, это просто тест. Пока что оставьте другие настройки без изменений

Создать репозитарий Git
Все очень просто.
Возможно, вы видели, как люди используют Git с командной строки. Это довольно просто, но не переживайте, мы пока что пропустим этот вариант. Мы будем пользоваться десктопным приложением для Github, который делает то же самое, но через удобный графический интерфейс под Windows или Mac.

Когда создан ваш репозиторий на Github, десктопное приложение установлено и запущено, вы увидите репозиторий в самом приложении. Нужно скопировать его к себе на машину.

Нужно его клонировать. Приложение позволяет выбрать папку, где будет жить репозиторий на компьютере: вот куда будет идти ваш код.

Сохраняем изменения git
Сохраняем изменения
Когда у вас уже клонирован свой репозиторий, добавьте в него любой файл, и вы увидите все изменения в приложении Github App:

Добавляем файл в репозитарий Github

коммит Github

Видите изменения? Давайте их закоммитим:

1-uzCcnHJWk6DSG3UjMETCAg

Убедитесь, что коммитите вместе с информативным комментарием о том, что содержит ваш коммит.
История коммитов!

История коммитов Github

Важно:

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

1-N6447osmv5GWDx_08V7FYA

При добавлении нового файла Git об этом не знает. Если вы не сделаете коммит…

1-fgie9Er3HjLDCdQ1SVHl-w

…любое сделанное изменение будет потеряно! Предыдущая строка куда-то делась, и история Git не сохранилась. Вот почему важно постоянно коммитить свою работу, мелкими кусочками — особенно, когда добавляете новый файл. Таким образом, вы всегда сможете откатить мелкие изменения назад, если нужно, и никакие данные не потеряются.

Как делиться своим кодом

Когда вы закончили работу, убедитесь, что залили ваши изменения на Github, используя кнопку Publish вверху, так чтобы другие участники проекта могли его видеть (а у вас будет бекап на случай, если что-то плохое случится с вашим компьютером)! Аналогично, если вам нужно получить изменения, сделанные другими участниками проекта из Github, просто нажмите Sync.

Хотите увидеть предыдущее состояние вашего проекта? Просто выделите предыдущий коммит в истории.

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

1-xyeP9ysBbpYfsGnKdtTX1g

Опять же, не забывайте об информативных комментариях к каждому коммиту

Что дальше?

Вы уже поняли, что приложение Github показывает опцию под названием «ветки» (branches). Ветки — отличный способ модулировать проект и убедиться, что изменения в вашем коде не конфликтуют с другими членами проекта — но оставим этот момент на другой день.

Использование Git для своих нужд — это уже отличный способ организовать кодинг и всегда иметь возможность отката нежелательных изменений. Тем не менее, это только начало освоения всех возможностей сервиса. Если вы хотите продвинуться дальше, вот парочка ресурсов: