# Создание аккаунта и репозитория в СКВ gihtub 1. Создать аккаунт на https://kolei.ru * логин - первая буква имени и фамилия в латинице. Например, логин для "Евгений Колесников" будет **ekolesnikov** * пароль произвольный 2. Создать репозиторий на `kolei.ru` НЕ ДОБАВЛЯЯ В НЕГО README.MD 3. Инициализировать новый репозиторий на компьютере (создать отдельный каталог): Вообще в наш курс не входит обучение командной строке операционной системы, но оказалось, что будущие программисты этого не умеют... 1. Запускаем на локальном компьютере программу `cmd` Откроется черное окно консоли, в которой будет написан текущий каталог, для винды это каталого пользователя, обычно это `c:/users/user` 1. Создаем каталог для проекта командой `mkdir <имя каталога>`, например ``` mkdir skv ``` 1. Переходим в этот каталог командой `cd <имя каталога>` ``` cd skv ``` 1. Текущий каталог должен быть примерно таким: `c:/users/user/skv` Все необходимые команды написаны в репозитории после создания, но надо понимать что они делают и когда их выполнять: * Команда `git init` создает в ТЕКУЩЕМ каталоге новый локальный репозиторий (выполняется один раз): ``` git init ``` * Прежде чем добавлять файлы в репозиторий нужно создать в корне репозитория файл `.gitignore` и записать туда игнорируемые файлы и каталоги. Для `C#` там надо написать: ``` # в каталогах bin и obj записываются скомпилированные файлы */bin/ */obj/ # в каталоге .vs хранятся локальные настройки VisualStudio .vs/ # в каталоге packages хрянятся зависимости packages/ ``` * Для записи коммитов в репозиторий пользователь должен быть идентифицирован. Для этого выполните команды (один раз для репозитория): ``` git config user.name "Ваше имя" git config user.email "Ваша почта" ``` >Если вы работаете дома, то можете один раз выполнить эти команды с флагом `--global` * В колледже используется прокси, из-за которого **git** может ругаться на не верный сертификат. В этом случае отключите проверку сертификата: ``` git config --global http.sslVerify false ``` * Команда `git add <имя файла>` помечает файл как отслеживаемый системой контроля версий. Вместо конкретного имени можно указать "." (символ точки), чтобы добавить в отслеживаемые все изменившиеся файлы. Выполняется перед каждым коммитом. ``` git add . ``` * Команда `git commit` сохраняет отслеживаемые файлы в локальный репозиторий. Выполняется при завершении какого-то законченного атомарного действия (создали класс, написали функцию...) ``` git commit -m "текст комментария" ``` * Команда `git remote add <алиас> ` добавляет в настройки локального репозитория ссылку на внешний репозиторий. Выполняется один раз для каждого внешнего репозитория (их может быть более одного). ``` git remote add origin <ссылку на проект копируйте из внешнего репозитория> ``` * Команда `git push [-u] <алиас внешнего репозитория> <название ветки>` отправляет содержимое локального репозитория в указанный внешний репозиторий. Ветка по-умолчанию в **Git**-е: *master*. Ключ `-u` задает комбинацию алиас + внешний репозиторий по-умолчанию, т.е. в следующий раз можно использовать просто каоманду `git push`. ``` git push origin master ``` * если на компьютере установлен **credential manager**, то он может запоминать последнего пользователя и не разрешить запись в другой репозиторий. В этом случае удаляем его из системы: ``` git config --system --unset credential.helper ``` * для **GOGS** (что-то с буфером передачи) ``` git config --global http.postBuffer 157286400 ``` 4. Исследовать команды, описанные в [лекции](./skv.md#базовые-команды-git). Команды и возвращаемый результат записать в `readme.md`, используя формат **MarkDown**. Команды, которые надо выполнить и сохранить логи работы помечены значком `🕮` * куски кода или консольный ввод/вывод в MarkDown-е обозначаются тройными обратными кавычками: \`\`\` ``` Здесь кусок кода ``` \`\`\` 6. Результаты опубликовать в репозитории, созданном в п.2 и скинуть ссылку в чат. [Пример выполнения](./skv_lab_example.md)