Основы работы с GIT
Last updated
Last updated
Гит - это так называемая система контроля версий. У нее очень много функций и возможностей. Для того, чтобы начать понимать, как это работает и зачем это нужно, начнем с самых азов.
Если говорить человеческим языком, гит - это программа, которая позволяет многим разработчикам писать один и тот же проект, и не перебрасывать друг другу код архивами, а упорядоченно сохранять и синхронизировать все изменения, которые были внесены в проект. Упрощенно это можно представить в виде следующего рисунка.
Gitlab сохраняет у себя нашу папку, выделяет для нее место, у нее появляется адрес в интернете, и мы теперь можем делиться своими наработками с другими людьми.
Другой человек (например ментор или преподаватель) получает от вас ссылку на ваш проект. С помощью того же гита он копирует себе вашу папку с Gitlab на свой компьютер.
Другой человек вносит какие-либо изменения в ваш проект, добавляет что-то, удаляет и так далее, и отправляет новую версию вашего проекта к вам на удаленное хранилище проекта из пункта 2. Если все прошло хорошо и вы разрешили ему это делать (что может пойти не так и как запретить кому-либо что-то изменять в вашем проекте мы будем узнавать позже и постепенно), то удаленное хранилище примет его изменения, и теперь там будет храниться новая версия проекта.
Вы хотите получить новую версию проекта, которую вам помог сделать другой человек. Обращаетесь к Gitlab и забираете себе все новые изменения, которые были внесены в пункте 4. Вуаля - изменения у вас на компьютере. Так выглядит упрощенная схема работы с гитом.
На начальных этапах, когда мы будем работать сами, гит нам нужен лишь для того, чтобы хранить удаленно свои проекты и давать ссылки ментору на проверку. То есть, если вернуться к вышеупомянутому процессу, ментор - это человек из пункта 3. С поправкой лишь на то, что изменения к вам в проект он вносить не будет :)
В дальнейшем при работе в командах мы узнаем что такое ветвление, слияние, мердж реквесты и прочие вещи, но на данный момент нам это пока не нужно.
Итак, ниже - инструкция, как все-таки начать работать с гитом.
Терминология
Некоторые термины, которые будут встречаться далее, и значение которых нужно понимать:
Репозиторий - это проще говоря - папка.
Удаленный репозиторий - это папка на Gitlab, ваш проект на Gitlab.
Локальный репозиторий - это папка на вашем компьютере.
Коммит - это некая совокупность изменений, сделанных вами, которая будет отправлена в удаленный репозиторий. Коммитить - по сути значит сохранять изменения.
Проиндексировать изменения - выполнить команду, которая выберет какие файлы мы будем коммитить. Сначала мы индексируем изменения, потом их коммитим.
Запушить изменения - отправить ваш коммит на удаленный репозиторий.
Спулиться - забрать себе в локальный репозиторий изменения, которые были запушены в удаленный репозиторий другим человеком.
Установка Git
Для начала надо установить программу Git себе на компьютер.
Далее нам нужно открыть на компьютере терминал, в любой папке. В операционной системе Windows это можно сделать нажав правой клавишей мыши в папке, и выбрав пункт меню Открыть терминал
или Git bash here
. Ниже красным цветом выделены строки-команды для терминала.
Пишем команды:
git config --global user.name "Name Surname"
(имя и фамилию подставляем свои).
git config --global user.email "email@gmail.com"
(email подставляем тот, на который регистрировали аккаунт на гитлабе).
Если гит не дал никакой негативной обратной связи, значит все было сделано правильно.
Только что мы установили глобальные настройки для гита - дали ему знать, кто с ним общается и как нас найти. Эти команды необходимо выполнить только один раз после установки гита, более они нам не понадобятся.
Привязка проекта к Git
Чтобы создать проект, который будет управляться с помощью Git, необходимо выполнить следующие шаги:
Находим на гитлабе кнопку New project
, нажимаем ее.
Получаем такую картину
Придумываем и вводим вменяемое название для проекта, выбираем доступ - Public, чтобы проект по умолчанию был доступен любому пользователю и нам не приходилось потом кому-то специально давать к нему доступ. Выбираем галочку про Readme.
Нажимаем Create project
.
Видим такую картину
Мы создали на гитлабе проект, и теперь будем сюда отправлять весь код, который написали у себя на компьютере.
Там где SSH
- выбираем Https
, копируем ссылку рядом. Должно получиться что-то наподобие https://gitlab.com/IrinaSt/pizza-delivery3.git
.
Дальнейшие действия зависят от того, начинали ли вы до текущего момента работу над проектом. У вас может быть две ситуации:
У вас еще нет проекта на гитлабе и нет проекта на компьютере. Все создаем с нуля. В таком случае переходим к Варианту 1
.
У вас нет проекта на гитлабе, но есть папка с файлами на компьютере, которую вы отныне хотите хранить на гитлабе. В таком случае переходим к Варианту 2
.
Вариант 1. Создание нового Git проекта
У вас нет ни проекта на гитлабе, ни папки на компьютере, вы только стартуете работу, и решили начать сначала с подключения гита в проект. Для этого, после выполнения предыдущих четырех шагов:
На компьютере выбираем место, где будет храниться проект. Например в папке Homeworks
. Заходим в эту папку, нажимаем правой клавишей, и выбираем Git bash here
(Windows) или открываем любой другой терминал в этом месте. В этом месте - значит в папке, в которой будет вестись работа. Если при нажатии правой клавиши мыши нет опции открыть терминал, откройте его любым другим способом (поищите в интернете инструкцию для вашей операционной системы).
В консоли пишем команду - git clone https://gitlab.com/IrinaSt/pizza-delivery3.git
(это ссылка, которую вы скопировали в пункте 4).
Если система спрашивает имя пользователя и пароль - вводим свое имя пользователя - то, которое вы создавали при регистрации на гитлабе, вводим свой пароль - тот, который создавали при регистрации на гитлабе.
Если все было выполнено правильно, внутри рабочей папки должна создаться еще одна - с названием проекта и файлом readme.md
внутри. Пропускаем описание Вариант 2
и переходим к Шагу 2
.
Для внесения последующих изменений в проект переходим к следующему одноименному разделу.
Вариант 2. Подключение существующего проекта к Git
У вас есть папка с файлами на компьютере, но нету проекта на гите, и вы хотите отправить свою работу на гитлаб. Для этого, после выполнения предыдущих четырех шагов:
Заходим в папку где хранится наш проект. Например, представим себе, что он выглядит так:
Открываем терминал в этой папке.
Пишем команду git init
(Мы сказали гиту - создай в этой папке локальный репозиторий и работай тут, следи за изменениями в коде проекта и т.д.).
Пишем команду git remote add origin https://gitlab.com/IrinaSt/pixelperfect5.git
(это ссылка которую вы скопировали в пункте 4. Мы сказали гиту - эта папка (репозиторий) будет синхронизирована с папкой на гитлабе, и все изменения в коде мы будем отправлять именно туда (для этого мы и написали ее адрес - тот что был в ссылке).
Теперь переходим к следующему шагу - Внесение последующих изменений в проект
. Это нужно чтобы отправить все файлы, которые у вас уже есть в проекте, на гитлаб.
Внесение последующих изменений в проект
Данные шаги необходимо выполнять каждый раз после того, как вы сделали какие-то изменения в проекте, чтобы отправить эти изменения на удаленный репозиторий.
Находясь в папке с проектом, пишем команду git add .
(git add, пробел, точка). Мы только что сказали гиту - добавь все измененные файлы в коммит. Все файлы, в которых мы делали какие-либо изменения, будут специальным образом отмечены гитом, и подготовлены к коммиту.
Пишем команду git commit -m "Initial commit"
(фраза в скобах называется commit message - комментарий, который нужен для краткого описания изменений, которые вы сделали. Он обязателен, и он должен быть на английском). Git делает коммит, и сохраняет все ранее сделанные изменения в вашем локальном репозитории.
Далее - git push -u origin master
. Эта команда отправляет наш коммит на удаленный репозиторий.
Если система спрашивает имя пользователя и пароль - вводим свое имя пользователя - то, которое создавали при регистрации на гитлабе, вводим свой пароль - тот, который создавали при регистрации на гитлабе.
Обновляем проект на гитлабе (обновить страницу браузера) - видим, что последняя версия файлов, которые находятся на компьютере в нашей папке - теперь есть на гитлабе.
Радуемся :)
Неотслеживаемые файлы
Очень часто существует необходимость исключить какие-то файлы, которые находятся внутри проекта, из работы с Git. Попросту говоря, сделать так, чтобы Git их не видел, и они никогда не попали в коммит и в локальный или удаленный репозиторий.
Когда это нужно? Например, при работе с IDE Intellij IDEA или Webstorm при открытии любого проекта у вас в нем автоматически создается папка под названием .idea
. Это системная папка, которая нужна для работы вашего редактора кода. Там в определенном формате указывается техническая информация о проекте, с которым вы работаете, а также разные настройки конкретно для вашей IDE.
Проблема в том, что другой разработчик, который работает с вами на этом проекте, тоже может иметь свою локальную папку .idea
на своем компьютере. И содержимое этих папок у вас будет отличаться, если вы используете разные программы, или даже разные версии одной и той же программы. И если вам на локальный компьютер попадут настройки чей-то чужой IDE, это может привести к тому, что вы больше не сможете открыть этот проект - IDE сломается.
Именно поэтому содержимое таких системных папок, которые релевантны только для вашего персонального компьютера, и не имеют отношения к проекту в целом, ни в коем случае нельзя заливать на удаленный репозиторий.
Для помощи разработчикам при работе с такого рода файлами и папками, в гите существует специальный файл, который называется .gitignore
. Именно так - названия файла нет, расширение файла - .gitignore. Этот файл должен лежать в корне вашего проекта, и его содержимое будет говорить гиту, какие из файлов и папок никогда не нужно отслеживать и добавлять в коммиты, даже при выполнении команды git add .
.
Внутри это обычный текстовый файл. Каждое правило (ссылка на файл / папку) должны находиться на новой строке.
Если вы хотите добавить какую-то папку в .gitignore
, напишите имя папки, и поставьте после имени слеш /
. Если вы хотите добавить какой-то файл, просто напишите полное имя файла с расширением.
Допускается использование спецсимволов. Например, символ *
означает "любой".
Если вы работаете с Intellij IDEA или с Webstorm, минимальный файл .gitignore
у вас должен включать папку .idea
, а также все файлы с расширением .iml
- это тоже системный файл с описанием проекта, который иногда может автоматически появляться у вас в корне проекта. Выглядеть такой .gitignore
файл будет следующим образом:
В будущем, когда ваш проект будет расти, вы можете добавлять новые файлы и папки в список игнорируемых, следуя правилам, указанным выше.
На нашем компьютере хранится какой-то проект - папка с файлами. Мы проделываем махинации с гитом и отправляем все, что мы сделали, в удаленное хранилище. На данный момент два самых популярных ресурса - и . В данной инструкции будет показана работа с Gitlab.
.
Далее создаем учетную запись на сайте (запоминаем свои email, username и пароль, они нам еще понадобятся). Или . На начальном этапе абсолютно все равно, где мы будем создавать аккаунт. Но просьба учесть, что данная инструкция учит работе с Gitlab, и все учебные материалы вашей группы также лежат на Gitlab.