📓Основы работы с GIT

Основы работы с системой контроля версий Git

Гит - это так называемая система контроля версий. У нее очень много функций и возможностей. Для того, чтобы начать понимать, как это работает и зачем это нужно, начнем с самых азов.

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

git-flow
  1. На нашем компьютере хранится какой-то проект - папка с файлами. Мы проделываем махинации с гитом и отправляем все, что мы сделали, в удаленное хранилище. На данный момент два самых популярных ресурса - Github.com и Gitlab.com. В данной инструкции будет показана работа с Gitlab.

  2. Gitlab сохраняет у себя нашу папку, выделяет для нее место, у нее появляется адрес в интернете, и мы теперь можем делиться своими наработками с другими людьми.

  3. Другой человек (например ментор или преподаватель) получает от вас ссылку на ваш проект. С помощью того же гита он копирует себе вашу папку с Gitlab на свой компьютер.

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

  5. Вы хотите получить новую версию проекта, которую вам помог сделать другой человек. Обращаетесь к Gitlab и забираете себе все новые изменения, которые были внесены в пункте 4. Вуаля - изменения у вас на компьютере. Так выглядит упрощенная схема работы с гитом.

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

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

Итак, ниже - инструкция, как все-таки начать работать с гитом.

Терминология

Некоторые термины, которые будут встречаться далее, и значение которых нужно понимать:

  • Репозиторий - это проще говоря - папка.

  • Удаленный репозиторий - это папка на Gitlab, ваш проект на Gitlab.

  • Локальный репозиторий - это папка на вашем компьютере.

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

  • Проиндексировать изменения - выполнить команду, которая выберет какие файлы мы будем коммитить. Сначала мы индексируем изменения, потом их коммитим.

  • Запушить изменения - отправить ваш коммит на удаленный репозиторий.

  • Спулиться - забрать себе в локальный репозиторий изменения, которые были запушены в удаленный репозиторий другим человеком.

Установка Git

Для начала надо установить программу Git себе на компьютер.

Инструкции по установке для разных операционных систем.

Далее создаем учетную запись на сайте Gitlab.com (запоминаем свои email, username и пароль, они нам еще понадобятся). Или Github.com. На начальном этапе абсолютно все равно, где мы будем создавать аккаунт. Но просьба учесть, что данная инструкция учит работе с Gitlab, и все учебные материалы вашей группы также лежат на Gitlab.

Далее нам нужно открыть на компьютере терминал, в любой папке. В операционной системе Windows это можно сделать нажав правой клавишей мыши в папке, и выбрав пункт меню Открыть терминал или Git bash here. Ниже красным цветом выделены строки-команды для терминала.

Пишем команды:

  1. git config --global user.name "Name Surname" (имя и фамилию подставляем свои).

  2. git config --global user.email "email@gmail.com" (email подставляем тот, на который регистрировали аккаунт на гитлабе).

  3. Если гит не дал никакой негативной обратной связи, значит все было сделано правильно.

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

Привязка проекта к Git

Чтобы создать проект, который будет управляться с помощью Git, необходимо выполнить следующие шаги:

  1. Находим на гитлабе кнопку New project, нажимаем ее.

  2. Получаем такую картину

    git-flow

    Придумываем и вводим вменяемое название для проекта, выбираем доступ - Public, чтобы проект по умолчанию был доступен любому пользователю и нам не приходилось потом кому-то специально давать к нему доступ. Выбираем галочку про Readme.

    Нажимаем Create project.

  3. Видим такую картину

    git-flow

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

  4. Там где SSH - выбираем Https, копируем ссылку рядом. Должно получиться что-то наподобие https://gitlab.com/IrinaSt/pizza-delivery3.git.

Дальнейшие действия зависят от того, начинали ли вы до текущего момента работу над проектом. У вас может быть две ситуации:

  • У вас еще нет проекта на гитлабе и нет проекта на компьютере. Все создаем с нуля. В таком случае переходим к Варианту 1.

  • У вас нет проекта на гитлабе, но есть папка с файлами на компьютере, которую вы отныне хотите хранить на гитлабе. В таком случае переходим к Варианту 2.

Вариант 1. Создание нового Git проекта

У вас нет ни проекта на гитлабе, ни папки на компьютере, вы только стартуете работу, и решили начать сначала с подключения гита в проект. Для этого, после выполнения предыдущих четырех шагов:

  1. На компьютере выбираем место, где будет храниться проект. Например в папке Homeworks. Заходим в эту папку, нажимаем правой клавишей, и выбираем Git bash here (Windows) или открываем любой другой терминал в этом месте. В этом месте - значит в папке, в которой будет вестись работа. Если при нажатии правой клавиши мыши нет опции открыть терминал, откройте его любым другим способом (поищите в интернете инструкцию для вашей операционной системы).

  2. В консоли пишем команду - git clone https://gitlab.com/IrinaSt/pizza-delivery3.git (это ссылка, которую вы скопировали в пункте 4).

  3. Если система спрашивает имя пользователя и пароль - вводим свое имя пользователя - то, которое вы создавали при регистрации на гитлабе, вводим свой пароль - тот, который создавали при регистрации на гитлабе.

  4. Если все было выполнено правильно, внутри рабочей папки должна создаться еще одна - с названием проекта и файлом readme.md внутри. Пропускаем описание Вариант 2 и переходим к Шагу 2.

Для внесения последующих изменений в проект переходим к следующему одноименному разделу.

Вариант 2. Подключение существующего проекта к Git

У вас есть папка с файлами на компьютере, но нету проекта на гите, и вы хотите отправить свою работу на гитлаб. Для этого, после выполнения предыдущих четырех шагов:

  1. Заходим в папку где хранится наш проект. Например, представим себе, что он выглядит так:

    git-flow

    Открываем терминал в этой папке.

  2. Пишем команду git init (Мы сказали гиту - создай в этой папке локальный репозиторий и работай тут, следи за изменениями в коде проекта и т.д.).

  3. Пишем команду git remote add origin https://gitlab.com/IrinaSt/pixelperfect5.git (это ссылка которую вы скопировали в пункте 4. Мы сказали гиту - эта папка (репозиторий) будет синхронизирована с папкой на гитлабе, и все изменения в коде мы будем отправлять именно туда (для этого мы и написали ее адрес - тот что был в ссылке).

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

Внесение последующих изменений в проект

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

  1. Находясь в папке с проектом, пишем команду git add . (git add, пробел, точка). Мы только что сказали гиту - добавь все измененные файлы в коммит. Все файлы, в которых мы делали какие-либо изменения, будут специальным образом отмечены гитом, и подготовлены к коммиту.

  2. Пишем команду git commit -m "Initial commit" (фраза в скобах называется commit message - комментарий, который нужен для краткого описания изменений, которые вы сделали. Он обязателен, и он должен быть на английском). Git делает коммит, и сохраняет все ранее сделанные изменения в вашем локальном репозитории.

  3. Далее - git push -u origin master. Эта команда отправляет наш коммит на удаленный репозиторий.

  4. Если система спрашивает имя пользователя и пароль - вводим свое имя пользователя - то, которое создавали при регистрации на гитлабе, вводим свой пароль - тот, который создавали при регистрации на гитлабе.

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

  6. Радуемся :)

Неотслеживаемые файлы

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

Когда это нужно? Например, при работе с IDE Intellij IDEA или Webstorm при открытии любого проекта у вас в нем автоматически создается папка под названием .idea. Это системная папка, которая нужна для работы вашего редактора кода. Там в определенном формате указывается техническая информация о проекте, с которым вы работаете, а также разные настройки конкретно для вашей IDE.

Проблема в том, что другой разработчик, который работает с вами на этом проекте, тоже может иметь свою локальную папку .idea на своем компьютере. И содержимое этих папок у вас будет отличаться, если вы используете разные программы, или даже разные версии одной и той же программы. И если вам на локальный компьютер попадут настройки чей-то чужой IDE, это может привести к тому, что вы больше не сможете открыть этот проект - IDE сломается.

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

Для помощи разработчикам при работе с такого рода файлами и папками, в гите существует специальный файл, который называется .gitignore. Именно так - названия файла нет, расширение файла - .gitignore. Этот файл должен лежать в корне вашего проекта, и его содержимое будет говорить гиту, какие из файлов и папок никогда не нужно отслеживать и добавлять в коммиты, даже при выполнении команды git add ..

Внутри это обычный текстовый файл. Каждое правило (ссылка на файл / папку) должны находиться на новой строке.

Если вы хотите добавить какую-то папку в .gitignore, напишите имя папки, и поставьте после имени слеш /. Если вы хотите добавить какой-то файл, просто напишите полное имя файла с расширением.

Допускается использование спецсимволов. Например, символ * означает "любой".

Если вы работаете с Intellij IDEA или с Webstorm, минимальный файл .gitignore у вас должен включать папку .idea, а также все файлы с расширением .iml - это тоже системный файл с описанием проекта, который иногда может автоматически появляться у вас в корне проекта. Выглядеть такой .gitignore файл будет следующим образом:

.idea/
*.iml

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

Last updated