Skip to content

MMCS-FIIT/GithubGuide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 

Repository files navigation

Гайд по Git и Github

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

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

Tip

Вы можете посмотреть содержание данной статьи, кликнув на иконку image в правом верхнем углу этой статьи.

Работа с Github

Уточнение: Git != Github. Простыми словами, Git - это сама программа, которая осуществляет контроль версий, а Github - это ресурс, где можно удалённо хранить созданные гитом репозитории. Если вы ещё не заегистрированы на этом ресурсе, сделайте это, перейдя на главную страницу. Процесс регистрации не должен вызвать затруднений. Главное правило: используйте почту, к которой у вас есть доступ.

Получение Personal Access Token

С недавнего времени в целях безопасности GitHub разрешает вносить изменения в удалённые репозитории через командную строку только с использованием Personal access token. Поэтому, прежде чем начать работу, нам нужно его получить.

  1. Авторизуйтесь в GitHub. Вы попадёте на главную страницу. Щёлкните по своей аватарке в правом верхнем углу и в выпадающем меню выберите пункт Settings.

image

  1. Прокрутите открывшееся окно настроек в самый низ до пункта меню Developer settings.

    image

  2. В настройках разработчика выберите пункт меню Personal access tokens -> Tokens (classic). В этом разделе выберите пункт Generate new token (classic).

    image

  3. В открывшемся меню необходимо дать токену пояснение, для чего он создаётся (например, mmcs-hw). В разделе Select scopes нужно отметить только одну галочку - repo. Также можно изменить срок действия токена в разделе Expiration на No expiration, если вы не хотите создавать новый токен каждый месяц (бессрочные токены не рекомендуются к использованию самим Github, но это всё-таки удобнее, чем постоянное их обновление).

    image

  4. После того, как вы проверили все настройки, нажмите на кнопку Generate Token. На странице будет показан сгенерированный токен. Его нужно скопировать и сохранить там где его легко найдёте вы, и не сможет найти никто другой.

Warning

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

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

Создание удалённого репозитория

Important

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

Создание удалённого репозитория это достаточно простая процедура. Для начала авторизуйтесь на GitHub, после чего нажмите на + в правом верхнем углу, и выберите там New repository.

image

В открывшемся окне вам необходимо ввести название вашего репозитория (называйте свои репозитории ёмко и кратко!). По желанию можете добавить описание. Тип репозитория выбирайте в зависимости от требований задания или своих целей. Public репозитории может просматривать, скачивать и т.д. любой человек, а Private, в свою очередь, только тот, кого вы добавите в коллабораторов. Вы можете создать readme файл, в котором можно описать важную информацию о данном репозитории (но будьте осторожны, в этом случае репозиторий будет не пустой при создании!). .gitignore генерировать не надо, мы будем использзовать свой. Не забудьте нажать на кнопку Create repository.

Удалённый репозиторий создан! Теперь, чтобы начать его использовать, нужно связать его с локальным.

Работа с Git

Установка и первичная настройка Git

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

image

Во-вторых, измените стандартные названия начальных веток на main (Github ушёл от названия начальной ветки master в сторону названия main).

image

Остальные параметры можно оставить без изменения. Чтобы проверить, что вс действительно установлено, откройте консоль и введите git --version. Если вывелась версия гит, всё в порядке.

Теперь необходимо первично настроить гит, чтобы идентифицировать себя. Эти действия нужно проделывать каждый раз перед началом работы с git, если вы работаете не со своего личного компьютера (например, из компьютерного класса). На своём личном компьютере это необходимо сделать только один раз, при установке. Для начала установите свои имя и фамилию, чтобы можно было понять, кто автор коммитов. Обязательно возьмите имя и фамилию в кавычки, иначе сохранится только часть до пробела.

git config --global user.name "Имя Фамилия"

Теперь надо установить свою электронную почту. Почта должна быть той же, что вы использовали при регистрации в Github.

git config --global user.email your_email@example.com

И последняя команда, которую надо выполнить, это активации функции сохранения вашего токена Github с помощью Git Credential. Это необходимо, чтобы не вводить токен каждый раз, когда вы хотите что-то запушить или запуллить. После её активации при первом пуше/пулле ваш токен будет сохранён и будет использоваться во всех дальнейших операциях.

git config --global credential.helper store

Готово! Git установлен, настроен и готов к работе.

Создание локального репозитория

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

photo_5226792616337282802_x

Этот файл определяет, какие файлы не должны попасть в индекс, и, соответственно, в репозиторий. Этими файлами могут быть настройки, файлы, генерируемые при билде и прочее, что совершенно бессмысленно (а иногда и вредно!) оставлять в удалённом репозитории. У вас на компьютере при этом эти файлы никуда не денутся, а просто будут игнорироваться. Откройте консоль в текущей папке (через контекстное меню, либо введя cmd в строке, где указан путь к папке). Теперь инициализируйте репозиторий:

git init

На всякий случай вручную указываем имя основной ветки main для дальнейшей корректной работы с Github:

git branch -M main

Соединим наш локальный репозиторий с удалённым на Github. Сначала нам нужно скопировать ссылку на репозиторий. В случае с пустым репозиторием она находится на самом видном месте, а если в репозиторий уже что-то есть (сгенерированное автоматически самим Github), её можно найти в меню Code.

image image

Теперь локальному репозиторию необходимо сообщить адрес удалённого:

git remote add origin <скопированная ссылка>

На случай, если в удалённом репозитории уже есть что-либо, получим все коммиты оттуда (если репозиторий пустой, можно пропустить этот шаг):

git pull origin main

Теперь нам нужно отправить наши локальные изменения на Github. Чтобы проверить состояния репозитория, выполните команду:

git status

В ответ вы получите информацию о состоянии репозитория. В частности, гит указывает, на какой вы сейчас ветке (должна быть main), а также состояние всех ваших файлов. Как вы заметили, ваш .gitignore файл подсвечен красным и помещён в категорию Untracked (не в индексе). Это означает, что гит не отслеживает изменения этого файла. Надо это исправить! Для этого введите команду, добавляющую все доступные файлы в индекс:

git add .

После этого вы можете ещё раз запросить статус репозитория и обнаружить, что состояние файлов поменялось (и он стал отмечен зелёным). Теперь нам надо зафиксировать изменения в нашем локальном репозитории (точнее, добавить в историю изменений проекта наши файлы). Для этого нужно выполнить команду:

git commit -m "Initial commit"

В параметре -m мы передаём сообщение для коммита, которое будет отображено в дереве изменений. Обычно в этих сообщениях кратко передают суть изменений, внесённых до этого коммита. Итак, мы зафиксировали изменения, но теперь нужно сообщить удалённому репозиторию о том, что у нас есть локальный репозиторий и были сделаны какие-то коммиты. Для этого нужно запушить изменения. Выполните команду и введите ваш логин и Personal Access Token, если Git вас попросит:

git push -u origin main

Теперь можете проверить ваш удалённый репозиторий. Ваши файлы должны там появиться, ровно как и сообщение коммита. Можно приступать к работе!

Клонирование репозитория

Если в репозитории уже есть какието файлы (например, заготовки, или же файлы, сгенерированные Github), то вместо создания локального репозитория с нуля и ручного пулла изменений намного лучше склонировать репозиторий. Название этого действия полностью отражает то, для чего его делают: оно копирует все коммиты и файлы из удалённого реозитория, а также автоматически создаёт локальный. Звучит удобно, не так ли?

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

image

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

git clone <ваша ссылка>

И... Всё! В появивишейся папке вы найдёте все файлы (и коммиты!) из удалённого репозитория, и вы можете продолжать работать с этим репозиторием как обычно. Не забудьте добавить файл .gitignore, чтобы в репозиторий не попало ничего лишнего!

Note

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

Пайплайн работы с Git

В общем и целом всю работу с Git на простейшем уровне можно описать в одной диаграмме:

image

Именно так будет выглядеть ваша работа в первых домашних заданиях. В течение семестра мы изучим ещё больше функций этой VCS.

Работа с ветками

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

Для создания новой ветки из вашей основной ветки main вам в первую очередь предстоит закоммититить (и запушить) все текущие изменения в ней. После чего выполните команду (где new-branch - это название новой ветки):

git checkout -b new-branch

И после этого вы окажетесь на новой ветке. Вы можете вносить любые изменения, коммитить и пушить их, и ваша ветка main при этом не изменится, изменится только ваша текущая ветка.

Note

Команда git status, помимо всего прочего, указывает, в какой ветке вы сейчас работаете

Чтобы пушить изменения в удалённый репозиторий, используйте уже знакомую команду (где your-branch - название вашей ветки):

git push origin your-branch

Для перехода обратно в ветку main вам потребуется закоммитить (и запушить) все текущие изменения, после чего выолнить команду:

git checkout main

Таким же способом можно переключиться на любую ветку, заменив main на её название.

В какойто момент вы доделаете всю необходимую работу в ветке и захотите перенести все изменения в main. Для того чтобы "слить" ветки, вам потребуется команда merge. Например, вы сделали несколько коммитов в ветке cool-feature. Чтобы слить её с main:

  1. Перейдите в ветку main
    git checkout main
    
  2. Выполните команду:
    git merge cool-feature
    

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

Работа с Github Classroom

Домашние задания будут приниматься в специальном разделе Github для менеджмента образовательных курсов – Github Classroom. Работа с ним совсем немного отличается от обычных репозиториев.

Авторизация

Войдите в свой аккаунт Github. В каждом домашнем задании есть ссылка на Assignment. Когда вы переходите по такой ссылке в первый раз, вам нужно выдать разрешения Github Classroom для своего аккаунта. После чего вы попадёте на страницу выбора идентификатора. Выберите своё имя из списка. Если его там нет, нажмите Skip to the next step и сообщите своему преподавателю.

image

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

Выполнение задания

Когда вы переходите по ссылке на задание (не важно, после процесса авторизации, или прямиком из мудла), вам будет предложено приступить к заданию. Это действие ни к чему не обязывает, оно просто создаёт для вас репозиторий. Нажмите Accept this assignment.

image

Вас перебросит на страницу создания репозитория. Подождите несколько секунд и обновите страницу, чтобы увидеть результат.

Caution

Внизу страницы вы можете посмотреть дедлайн для данного задания. После дедлайна вы теряете возможность пушить в репозиторий!

image

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

image

В репозитории уже будут находиться служебные папки, ветки и коммиты. Не бойтесь, они не кусаются. Вашему процессу выполнения задания они никак не помешают. Создайте локальный репозиторий и свяжите его с данным удалённым по инструкциям выше. После соединения репозиториев выполните задания, делая коммиты по ходу выполнения, и запушьте изменения на Github до дедлайна.

Обратите внимание на вкладку Pull Requests. Там автоматически создался пулл реквест, внутри которого ваш преподаватель может оставлять комментарии к вашему коду. Уведомления о новых комментариях будут приходить на вашу почту.

Caution

Не сливайте и не закрывайте этот пулл реквест!

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors