Найти в Дзене

Xcode и GitHub

В этой статье мы рассмотрим: Погнали! Когда вы создаете новый проект приложения в Xcode, у вас есть возможность создать Git repository на вашем маке: Что такое Source Control? - это управление исходным кодом, т.е. управление версиями кода (сохранение, изменение, удаление, сохранение промежуточных вариантов) Что такое репозиторий? - Это просто хранилище файлов. Что такое Git? - это самый удобный и популярный сервис для контроля версий, т.е. программа, которая выполняет Source Control Получается из вышесказанного можно сделать выводы: Несмотря на то, что Xcode имеет встроенный функционал как для сохранения проекта вашего приложения локально, так и для публикации на GitHub, он не наглядный и часто выдает ошибку, не объясняя, что не так. Поэтому, для удобной и эффективной работы скачаем официальное приложение GitHub Desktop (308 МБ). После установки откроется окно: Переходим по ссылке Создать новый аккаунт. Задаем: Далее решаем головоломку (вы же программист, вы справитесь 😄). Потом по
Оглавление

В этой статье мы рассмотрим:

  • что такое управление версиями,
  • что такое репозиторий,
  • как сохранять версии проекта локально на вашем мак,
  • как сохранять версии проекта на GitHub.

Погнали!

Когда вы создаете новый проект приложения в Xcode, у вас есть возможность создать Git repository на вашем маке:

-2

Что такое Source Control? - это управление исходным кодом, т.е. управление версиями кода (сохранение, изменение, удаление, сохранение промежуточных вариантов)

Что такое репозиторий? - Это просто хранилище файлов.

Что такое Git? - это самый удобный и популярный сервис для контроля версий, т.е. программа, которая выполняет Source Control

Получается из вышесказанного можно сделать выводы:

  1. в состав Xcode входит программное обеспечение Git
  2. ставя галочку Create Git repository on my Mac вы создаете хранилище, которое будет управляться сервисом Git

Несмотря на то, что Xcode имеет встроенный функционал как для сохранения проекта вашего приложения локально, так и для публикации на GitHub, он не наглядный и часто выдает ошибку, не объясняя, что не так. Поэтому, для удобной и эффективной работы скачаем официальное приложение GitHub Desktop (308 МБ).

1. Создание аккаунта GitHub

После установки откроется окно:

-3

Переходим по ссылке Создать новый аккаунт.

-4

Задаем:

  • email,
  • пароль,
  • ник,
  • не ставим галочку для получения рекламы.
-5

Далее решаем головоломку (вы же программист, вы справитесь 😄).

Потом подтверждаем email кодом подтверждения.

Заполняем анкету (ответы не важны, это их маркетиноговое исследование):

-6

И, наконец, выбираем бесплатный план:

-7

Открывается супер-страшная и непонятная страница:

-8

Не переживайте, нам тут делать ничего не нужно. Пока…

2. Настройка GitHib Desktop

Возвращаемся в приложение и выбираем Sign in to GitHub.com:

-9

Подтверждаем авторизацию десктопного приложения:

-10

В приложении подтверждаем аккаунт - нажимаем finish.

Если после этого появиться окно Move GitHub Desktop to the Applications folder? - выбираем Move and Restart. (Мы просто добавили GitHub в приложения на мак)

Ок, далее открывается стартовое окно управления репозиториями (то есть хранилищами, то есть папками, в которых хранятся ваши проекты Xcode). В этом окне мы можем или создать новую папку-репозиторий, или использовать существующую папку, как репозиторий.

-11

Давайте создадим новый репозиторий. По умолчанию программа предлагает расположение Documents/GitHub, но я в своём примере сделаю репозиторием папку на рабочем столе. Вы можете назначить репозиторием любую удобную папку.

-12

3. Создание проекта

Оставляем пока GitHub Desktop и возвращаемся в Xcode. Создаём новый проект приложения для iOS, ставим галочку Create Git repository on my Mac, выбираем в качестве места сохранения наш репозиторий.

Создали? Ок, возращаемся в GitHub Desktop.

-13

Мы видим, что GitHub Desktop зафиксировал 11 изменений (changes) в нашем репозитории.

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

Итак в верхнем меню GitHub Desktop мы видим 3 раздела:

-14
  1. Current Reposotory - текущий репозиторий (тут всё понятно, это репозиторий, созданный в указанной нами папке),
  2. Current Branch - текущая ветка (как правило, говорят просто бранч или брэнч)

Что такое Branch: это ответвление хода разработки кода. Допустим вы пишете программу, дошли до какого-то момента, где всё работает, а дальше еще не решили, как делать, и хотите написать два альтернативных варианта. Так вот, в этот момент вы можете создать вторую «ветку» (branch) написания кода и писать одну и ту же программу в двух альтернативных вариантах одновременно.

-15

Одна из веток всегда будет называться main, то есть должна быть основной.

-16
  1. Publish Repository - это кнопка позволяет опубликовать ваш репозиторий в интернете на сайте GitHub.com. Давайте на неё нажмём:
-17

Галочка Keep this code private делает ваш код доступным для просмотра только для вас, в самом конце статьи мы покажем, как поменять настройки публичности. Нажимаем Publish Repository.

Окей, мы опубликовали наш репозиторий. Давайте перейдем на сайт github.com (обновим страницу которую мы оставляли открытой):

-18

Слева с списке репозиториев должен появиться наш новый репозиторий. Откроем его на сайте.

-19

Что мы видим:

  • во-первых нет никаких файлов проекта,
  • во-вторых, хоть мы и только что опубликовали проект, видим мы время его создания (в моём случае 45 минут назад)
Итак, мы подошли к ключевому термину GitHub - Commit (дословно «совершать»), в контексте GitHub сделать Commit значит сохранить изменения.

Если посмотреть на принтскрин, то мы видим, что 45 минут назад был выполнен Initial commit, то есть был инициализирован репозиторий.

А никаких файлов проекта нет на сайте, потому что после инициализации, мы не делали больше commit, то есть мы не сохраняли сделанные в репозитории изменения.

4. Управление версиями проекта

Возвращаемся в GitHub Desktop. Давайте «закоммитим» наши 11 изменений (напомню, наши 11 изменений - это только то, что мы создали в репозитории проект).

Для этого нужно написать Summary (пояснение для самого себя, что за изменения) и нажать Commit to main.

-20

Нажали? - Ок, мы сохранили изменения в ветке main. Далее мы видим, что программа предлагает нам Push commits to the origin remote, т.е. отправить сохраненные изменения нашего кода на сайт GitHub:

-21

Давайте нажмём Push origin.

Теперь если обновить страницу в интернете нашего репозитория, то мы увидим файл нашего проекта:

-22

Отлично, мы с вами установили необходимое ПО и прошли полный круг работы с репозиторием.

Проговорим еще раз процесс:

  • вы пишите код,
  • в какой-то момент вы сохраняете сделанные изменения (commit),
  • далее вы «пушите» их на github.com.
-23
Обратите внимание: вы не обязаны «пушить» изменения на github.com. Вы можете работать с GitHub Desctop локально на вашем мак. «Пушить» изменения на сервер нужно если вы работаете в команде и у вас так заведено (то есть выгружать свою часть работы для того чтобы старший программист потом объединял всё в одну программу) и в случае, когда вам дали тестовое задание. Ну или вы сделали крутую программу и хотите ей со всеми поделиться. Для соло разработки достаточно локальных commit'ов

5. Создание альтернативной ветки проекта (branch)

Давайте теперь внесем в наш код какие-нибудь изменения и пройдем весь процесс. Переходим в Xcode и внесем пару правок в код:

-24

Все строки, в которых произведены изменения, добавления или удаления подсвечиваются синим слева.

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

-25

Давайте напечатаем что-нибудь в summary и закоммитим эти изменения.

Возвратимся в Xcode. Синие прямоуголники, сообщающие об изменениях пропали.

Давайте теперь внесем ещё изменения в в код:

-26

Если нажать на синий прямоугольник слева, то появиться меню Show Change, Stage Change или Discard Change, что означает «показать изменения», «подготовить к фикисрованию изменений» и «отменить изменения»:

-27
  • если выбрать первый вариант, что Xcode отобразит тут же, что было, и что стало.
  • если выбрать второй вариант - то прямоугольник становиться закрашенным полностью. Вероятнее всего, это инструмент визуального менеджмента, каких-то других изменений не происходит.
  • если выбрать третий вариант - изменения будут отменены.
Обратите внимание, какое в этом удобство: вы можете отменять незакомиченные изменения прямо в Xcode, сравнивать варианты, помечать, то что уже проверили, а если просто хотите всё принять, ничего делать не нужно

Надеюсь, я не запутал вас, поехали дальше, переходим в GitHub Desktop, допустим, мы хотим сохранить новые изменения в новую ветку проекта. (Мы хотим с этого места писать два альтернативных варианта кода).

Выбираем Current Brach - New Branch - даём ей новое имя (я дал Alternative1):

-28

Далее программа нас спрашивает, в какую ветку сохранять новые изменения. Выбираем в новую ветку:

-29

Нажимаем Switch Branch, т.е. переключиться на новую ветку. Вернёмся на секунду в Xcode. Если посмотреть внимательно, в верхнем поле программы есть маленькое поле, в котором указывается имя ветки, в которой мы работаем, и сейчас она переключилась на новую:

-30

Возвращаемся в GitHub Desktop. Делаем commit в новую ветку (вы это уже умеете).

Если посмотреть в верхнем меню теперь вместо Publish Repository стало Publish Branch. То есть пока у нас в репозитории одна ветка main, мы публикуем её, как только появляются дополнительные - если мы хотим выкладывать в интернет альтернативные ветки, то мы должны каждую сначала опубликовать.

-31

Публиковать и пушить изменения мы уже умеем, осталось только рассмотреть случай, когда мы хотим «слить в одну» две ветки. Для этого открываем раздел Current Branch, сначала выбираем в качестве основной ветку main (то есть переключаемся обратно на нее), и далее нажимаем внизу кнопку Choose a branch to merge into main

-32
Важный момент! В обоих сливаемых ветках должны быть закомичены все изменения, иначе программа будет ругаться. Если вдруг вы видите предупреждение, что не все изменения are commited и система предлагает их stash, то выбирайте отмена и делайте commit на обеих ветках. (Иногда изменения появляются сами, видимо какие-то файлы резервного копирования)

Итак, далее программа спрашивает, какую ветку мы хотим «влить» в main - выбираем единственный вариант и нажимаем Create a merge commit, то есть «сохранить изменения операции слияния»:

-33

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

-34

Собственно всё!

Давайте для наглядности запушим изменения (то есть опубликуем их на github.com):

-35

Переходим на GitHub, открываем нашу папку с проектом:

-36

Удостовериваемся, что все наши файлы на месте.

6. Делаем проект доступным для всех (public)

Переходим в настройки:

-37

Проматываем в самый низ и в красной зоне выбираем Change visibility:

-38

Троекратно подтверждаем, вводим пароль и наконец, наш проект становиться public, то есть доступным для всех пользователей и вы можете им поделиться.

Чтобы поделиться достаточно просто прислать ссылку на проект.

Мы с вами рассмотрели все базовые возможности GitHub применительно к Xcode, думаю, с остальным вы без труда сможете разобраться самостоятельно.

Надеюсь, эта статья была вам полезна.

Не благодарите) Но про лайк не забывайте 👇🏼

Кстати, у нас есть телеграмм-канал и группа ВК, будем благодарны за подписку.