Про работу с Git

Про работу с Git

Oleg991

В продолжение статьи о том как стать iOS-разработчиком рассказываю про систему контроля версий (Git).

Git используется в работе постоянно. Для работы с гитом я использую GitHub Desktop и Fork - удобные программы на мой взгляд, которые мне позволяют избежать необходимости использования терминала в 99.9% случаев.

Что такое Git

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

GitHub, в свою очередь, является платформой для размещения Git-репозиториев, облегчающей совместную работу над проектами. Гитхаб взял для примера, потому что код для большинства моих статей про iOS находится именно в гитхабе, но есть и другие платформы, например GitLab.

GitHub Desktop

Что я делаю при помощи этой программы:

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

Ветки в гите

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

С ветками обычно делают такие операции:

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

Что такое коммит

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

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

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

Отправляем изменения в гит

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

Получаем изменения из гита

Можно сделать фетч (fetch), чтобы узнать, сколько коммитов добавилось с момента предыдущего обновления проекта на твоем девайсе.
Потом можно сделать пулл (pull), чтобы скачать себе все обновления проекта для выбранной сейчас ветки.

Когда нужен терминал

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

Хорошая новость

Все стандартные операции с гитом можно выполнять прямо в Xcode через пункт меню Integrate, но мне больше нравится UI в Github Desktop.

Заключение

Про гит можно рассказывать много интересного, но главное - найти подход, который решает все твои задачи без особых усилий, и пользоваться этим подходом. Нет никаких правил типа "использовать только терминал/командную строку для работы с гитом" - это бесполезные ограничения, и абсолютная вкусовщина.

Иногда мне все же приходится залезть в терминал, и об этом я пишу в телеграм с тегом #terminal.

Для 99% случаев я использую в работе Github Desktop, и иногда использую Fork, когда работаю с сабмодулем. Обе программы на момент написания статьи бесплатные.

Report Page