Найти в Дзене
Помоги себе сам

История изменений и колективная работа в C#. Visual Studio и GitHub

Это статья про программирование. Она будет полезна начинающим программистам, которые уже освоились в среде разработки Visual Studio и начинают двигаться в сторону более сложных программ. Если Вы совсем не знаете, что такое программирование, но имеете желание научиться, то я писал очень подробно с чего начать в этой статье. Итак, программы, которые Вы пишите постепенно становится всё сложнее. Представим несколько случаев, которые однажды неминуемо наступят. Вы можете работать над одним проектом дома, в институте и на работе. Скидывать каждый раз изменения или свежую версию исходников - очень плохой вариант: однажды забываешь это сделать и начинается разлад. Другой случай, когда Вы хотите разрабатывать один проект с другом или хотите показать проект более опытному другу в надежде на совет. Также в один день может прийти осознание, что пару дней назад была допущена ключевая ошибка. Но изменения с тех пор были очень очень масштабные, чтобы вспомнить, что и где поменялось. А копию каждый р
Оглавление

Это статья про программирование. Она будет полезна начинающим программистам, которые уже освоились в среде разработки Visual Studio и начинают двигаться в сторону более сложных программ. Если Вы совсем не знаете, что такое программирование, но имеете желание научиться, то я писал очень подробно с чего начать в этой статье.

Итак, программы, которые Вы пишите постепенно становится всё сложнее. Представим несколько случаев, которые однажды неминуемо наступят.

Вы можете работать над одним проектом дома, в институте и на работе. Скидывать каждый раз изменения или свежую версию исходников - очень плохой вариант: однажды забываешь это сделать и начинается разлад. Другой случай, когда Вы хотите разрабатывать один проект с другом или хотите показать проект более опытному другу в надежде на совет. Также в один день может прийти осознание, что пару дней назад была допущена ключевая ошибка. Но изменения с тех пор были очень очень масштабные, чтобы вспомнить, что и где поменялось. А копию каждый раз делать тоже не самый лучший выход в этом случае, так как удобного поиска когда и что было сделано нет.

В этих случаях поможет система контроля версий. Она поможет и во многих других случаях, некоторые из которых также рассмотрим в этой статье. Самым популярным сервисом, реализующим эти функции (и некоторые другие) является GitHub. Им и воспользуемся. В GitHub можно сделать неограниченное число публичных и приватных (бесплатно до 3х разработчиков) репозиториев (хранилищ файлов связанных с проектом). При создании репозитория лучше придерживаться следующих правил. Один проект - один репозиторий. И если проект делается в Visual Studio - создавать репозиторий лучше из самого Visual Studio.

Подготовка среды разработки Visual Studio к работе с GitHub

Итак, заходим на сайт github.com, регистрируемся, обязательно подтверждаем регистрацию (иначе некоторые кнопки будут недоступны). Если при установке Visual Studio не выбрали соответствующую галочку, то надо поставить плагин для GitHub в Extensions->Manage Extensions и перезапустить Visual Studio.

Как сохранить свой проект в GitHub

Когда проект открыт, то в правом нижнем углу Visual Studio есть маленькая ссылка "Add to Source Control". После того как её нажать откроется вкладка Team Explorer. Первый раз спросит почту и пароль от GitHub. Если нажать в Team Explorer значок с домиком, а там посмотреть изменения (Changes), то увидим файлы, которые подготовлены для синхронизации. То же окно откроется если нажать на карандашик в нижней панели. После ввода комментария можно сделать коммит (пакет изменений), проще всего выбирать вариант "Commit All and Sync" (в первый раз "Commit Staged and Sync"). Хорошим тоном является писать комментарии к коммитам на английском.

После клика на "Add to Source Control" появилась панель системы контроля версиями и открылся Team Explorer
После клика на "Add to Source Control" появилась панель системы контроля версиями и открылся Team Explorer

Как открыть проект из GitHub

Если Вы пришли на новое место и хотите открыть проект, который раньше здесь не открывали (созданный в другом месте и синхронизированный с GitHub), то выбирайте "Клонирование или извлечение кода" на стартовом экране или в меню File. Там кликайте по ссылке GitHub, а после ввода учётных данных появится выбор проекта. На скриншотах можно заметить, что некоторые из них сделаны в русском интерфейсе программы - это уже другой компьютер компьютер (так ну меня уже всё настроено и я мог что-то упустить). Откроется Team Explorer. Открыть проект можно кликнув на проекте в разделе Solutions, программа немного задумается и в Solution Explorer'e уже можно будет как обычно открывать и исправлять любые файлы проекта.

После добавления можно открыть решение кликнув на проекте в вкладке Решение (Solutions)
После добавления можно открыть решение кликнув на проекте в вкладке Решение (Solutions)

История изменений проекта и возврат к определённой версии в C# + GitHub

В Team Explorer'e во вкладке Actions есть пункт View History, он также есть в разделе с названием ветки в правом нижнем углу.

Альтернативная версия программы. Branches и Merge.

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

Если надо применить изменение из какой-то ветки в master (или другую ветку), то надо сделать Merge. Это делается из той ветки в которую будете вносить изменения (на неё надо переключиться) кнопкой из меню Merge From.

Работать вдвоём над одной программой. Fork в C# + GitHub

Если вы хотите пригласить друга поработать над вашим проектом, то надо дать ему соответствующую ссылку на него из адресной строки сайта GitHub. Ссылку можно вставить в поле ввода в "Клонирование или извлечение кода". Тогда он сможет создать отдельную ветку, а потом сделать Merge. Как всё это проделать уже описывал. Но такой способ имеет некоторые минусы, особенно если локальный репозиторий часто синхронизируется с глобальным или есть влияние базы данных на код программы. Другой вариант для решения такой задачи это инструмент Fork. Ваш друг открывает под собой ваш репозиторий на GitHub и там в правом верхнем углу нажимает кнопку "Fork". Теперь у него есть копия вашего репозитория, но его Pull request'ы автоматически попадают Вам. Их видно и на сайте GitHub и в Visual Studio.

Если вы приняли Pull request, то у Вас автоматически появляется ветка, которую надо Merge'ить в свою.

Как предоставить доступ к своему приватному репозиторию

Надо на сайте GitHub в настройках проекта зайти в раздел Manage Access и там (после подтверждения пароля) создать инвайт другу. При этом инвайт отправится ему автоматически по почте, но его можно скопировать (для этого там есть кнопочка) и отправить самому например через мессенджер.

Upd. 05.03.22: Уже неделю ходят слухи что GitHub могут заблокировать для пользователей из России, поэтому на всякий случай рекомендую сбросить Location если он указан у Вас в профиле.

___________________

Если Вы как и я изучаете C# для создание игр на движке Unity, то про использование GitHub именно в Unity я написал отдельную статью. Там же я рассказал про очень популярный планировщик задач - Jira.

#программирование #github #git #visual studio