Установка, базовая настройка и использование git на примере github для новичков.

Установка, базовая настройка и использование git на примере github для новичков.

@zhivoy_intellekt
Как начать пользоваться git новичку


Как установить git

Дистрибутивы и инструкции здесь - https://git-scm.com/downloads

В MacOS и Windows ставится через стандартные установщики(заходим на официальный сайт и устанавливаем все необходимое как обычное приложение), в Linux - командой в терминале. Например, если работаете в Ubuntu, то:

    sudo apt install git

В Linux и Mac запускаем команды git из стандартного терминала. В Windows будем использовать утилиту git bash, которая поставляется вместе с установщиком git под Windows.

Git для Windows включает в себя саму утилиту git и инструменты с графическим интерфейсом. Графические инструменты Windows мы рассматривать не будем. Все манипуляции на начальном этапе будем проводить в терминале git bash, так вам будет проще понять весь смысл и как все устроено.

Базовая настройка git

После успешной установки всего необходимого, открываем терминал git bash и перейдем к базовой настройке.

Проверим корректность установки git, набрав в командной строке

    $ git --version 
    git version 2.44.0.windows.1

Глобальные настройки git задаются командой

    git config --global parameter "value"

Для начала нас интересуют только 2 настройки: имя и почта, под которыми нас будут видеть сам git

    git config --global user.name "Zhivoy Intellekt"
    git config --global user.email "zhivoyintellekt@gmail.com"

Смотрим все настройки

    $ git config --list
    user.name=Zhivoy Intellekt
    user.email=zhivoyintellekt@gmail.com

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

Параметры user.name и user.email не имеют никакого отношения в вашим GitHub-аккаунтам. Это лишь реквизиты, которыми будут подписаны новые коммиты на вашем компьютере и всё.

Дружелюбный git

Git очень дружелюбен в плане подсказок в командной строке.

  • git --help - общая документация по git
  • git config --help - документация по конкретной команде (в нашем случае config)
  • Опечатались - git подскажет правильную команду
  • git подсказывает, что делать дальше

Естественно все подсказки не на русском, поэтому у вас будет стимул изучать английский :-)

На данном этапе мы установили git, познакомились с терминалом git bash и сделали базовую настройку. Далее нам необходимо создать свой первый репозиторий.

Что такое репозиторий

Это каталог в файловой системе, где хранится информация о проекте:

  • файлы и папки проекта
  • история проекта
  • настройки проекта
  • служебная информация

Информация о репозитории хранится в скрытой папке .git в корне проекта.

Репозитории бывают как локальные так и удаленные:

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

Удаленный - это репозиторий, который хранится в облаке, на сторонних сервисах, специально созданных под работу с проектами git (например GitHub). Главным плюсом удаленного репозитория является то, что он выполняет роль резервной копии вашего проекта. Это очень радует!

Создаём свой первый локальный репозиторий

Для более наглядного восприятия информации, я создадим новый пустой проект у себя на ПК и назовем его new_project.

После создания проекта, открываем терминал git bash, переходим в директорию нашего проекта и выполняем команду:

    $ git init

После успешного выполнения команды в папке нашего проекта появится новый скрытый каталог .git, а в терминале увидим надпись (master). Если все именно так, то примите мои поздравления, вы только что создали свой первый локальный репозиторий!

Локальный репозиторий создан, но git еще следит за файлами нашего проекта, чтобы в этом убедиться выполним команду status и он явно нам об этом скажет:

    $ git status

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

     $ git add main.py
     $ git commit -m "My first commit!"

Команда add добавит файл main.py в индекс. Индекс - это специальная промежуточная область, в которой хранятся изменения файлов на пути от рабочей директории до репозитория. При выполнении коммита в него попадают только те изменения, которые были добавлены в индекс.

Команда commit -m создаст «снимок» (коммит) текущего состояния проекта, включая все внесенные изменения. Каждое такое сохранение имеет уникальный идентификатор, который позволит отслеживать историю изменений в проекте и даст возможность откатить проект к предыдущей версии.

Чтобы убедиться, что команды сработали и git начал следить за изменениями в файле main.py, выполним команду log:

     $ git log

и в терминале увидим информацию о созданном коммите.

Вот с этого момента при любых изменениях в файле main.py, git будет нам сообщать об этом при выполнении команды status.

Так же git может нам рассказать, о том какие именно изменения были сделаны. Для этого мы спросим у него выполнив команду diff:

     $ git diff

и мы увидим в терминале какие изменения были сделаны и в каких файлах.

Допустим, мы сделали некие изменения в файле (из-за которых программа перестала работать) и хотим отменить их и вернуть файл в исходное (рабочее) состояние, то можем выполнить команду restore:

     $ git restore main.py

и git отменит все изменения в файле и вернет его в исходное состояние до последнего коммита.

Чтобы посмотреть изменения определенного коммита выполним команду show:

     $ git show aa600a43cb164408e4ad87d216bc679d097f1a6c

нужно передать ей идентификатор коммита, который мы отменяем.

А вот отменить изменения сделанные в последнем коммите можно с помощью команды revert:

     $ git revert aa600a43cb164408e4ad87d216bc679d097f1a6c

она создаст еще один коммит, но с противоположными изменениями.

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

Разберем еще один важный момент.

На этом этапе мы уже знаем как заставить git следить за изменениями определенных файлов нашего проекта, но как поступить с файлами которые не нужно отслеживать? Ведь в проекте могут находится файлы, которые не нужно отслеживать и как вы уже заметили, git нам постоянно об этом напоминает при выполнении команды status просит добавить их в индекс для следующего коммита, но мы не хотим что бы он за ними следил. Далее разберемся, что нам делать в такой ситуации...

В данном случае в проекте имеется файл .idea/ и мы не хотим его отслеживать. Для этого создадим в корне нашего проекта файл .gitignore выполнив команду:

     $ touch .gitignore

и добавим в него путь к файлу .idea/ за которым не нужно следить и сделаем коммит файла .gitignore:

     $ git add .gitignore  
     $ git commit -m "My two commit!"

Таким образом все файлы которые не нужно отслеживать мы просто помещаем в .gitignore и git не будет их индексировать. Но стоит понимать, что при экспорте локального проекта на удаленный репозиторий эти файлы также не будут экспортированы!

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

Как создать удаленный репозиторий на github

Для того чтобы создать репозиторий, нужно зарегистрироваться на github. Если у вас нет там аккаунта, то форму регистрации увидите сразу на главной странице - https://github.com/

После регистрации создание репозитория будет доступно с главной страницы github. При создании нужно указать название проекта (в нашем случае new_project) и тип репозитория (публичный или приватный). На остальное пока не обращаем внимания.

Есть 2 типа репозиториев:

  • публичный (public), открыт всем и любой пользователь может клонировать (копировать) на свой компьютер и работать с ним;
  • приватный (private), доступен только определенному кругу лиц - в первую очередь, нам самим.

Для себя будем создавать приватные репозитории. Для этого нам понадобятся ssh-ключи.

Что такое ssh-ключи

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

ssh-ключ не имеет прямого отношения к git, но так как репозитории находятся на удаленных серверах, то ssh-ключи используются для разграничения доступа к приватным репозиториям.

ssh-ключ состоит из пары ключей: публичного и приватного ключа. Это просто 2 текстовых файла:

  • /домашний-каталог/.ssh/id_rsa.pub - публичный
  • /домашний-каталог/.ssh/id_rsa - приватный

Публичный ключ передается сторонним серверам, например, github, для открытия доступа на эти сервера. Приватный ключ хранится только на нашей машине и никому не передается. То есть когда у нас просят ssh-ключ, чтобы дать доступ на какой-нибудь сервер, мы отдаем именно публичный ключ, id_rsa.pub

Как сгенерировать ssh-ключ

ssh-ключи сами собой не появляются, но стоит проверить, возможно, они были установлены раньше. Запустим в терминале команды:

    $ cd ~/.ssh
    $ ls -l

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

Если видим файлы id_rsa и id_rsa.pub - отлично, ключи уже есть.

Если этих файлов нет, то нужно сгенерировать ключи утилитой ssh-keygen. В Windows она устанавливается вместе с git, в Linux и MacOS при необходимости установите. В Linux, например, вот так

    $ sudo apt install ssh-keygen

После этого нужно сгенерировать пару ключей, запустив команду в терминале. Только следует указать свою почту :-)

    $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Проверяем:

    $ ls -l
    total 24
    -rw-r--r-- 1 ************************** id_rsa
    -rw-r--r-- 1 ************************** id_rsa.pub

Появились файлы id_rsa и id_rsa.pub - значит, ключи успешно сгенерированы.

known_hosts - это файл, в котором ssh прописывает сервера, на которые мы заходим, но его сначала не будет. При первом подключении к github нужно будет разрешить доступ к github.com (напечатать yes в терминале) и у вас в папке .ssh появится файл known_hosts.

Как добавить ssh-ключ в настройках github

Открываем публичный ключ id_rsa.pub и копируем его содержимое. В настройках github ищем раздел "SSH и GPG keys" - https://github.com/settings/keys. Жмем "New SSH key", задаем название ключа и вставляем в форму публичный ключ, прямо текстом. Все, теперь у нас есть доступ к нашему приватному репозиторию.

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

Переходим на страницу нашего ранее созданного репозитория на github, в моем случае адрес страницы такой - https://github.com/zhivoy-intellekt/new-project (у вас будет другой). В настройках выбираем SSH, копируем адрес, у меня он выглядит так - git@github.com:zhivoy-intellekt/new-repositiry.git. Далее открываем терминал git bash, переходим в каталог нашего локального проекта и выполняем команды:

     $ git remote add origin git@github.com:zhivoy-intellekt/new_project.git
     $ git push origin master

После успешного выполнения команд наш локальный проект размещен на github.

Для того, чтобы отправить изменения локального проекта на github выполняем команду:

    $ git push origin master

Ну и на последок познакомимся еще с одной процедурой в git, с клонированием.

Клонирование - это копирование удаленного репозитория на локальную машину. Обычно это первое действие при работе с проектом. При клонировании на нашу машину копируются файлы и папки проекта и вся его история. То есть мы получаем доступ к истории не с момента начала нашей работы над проектом, а с самого начала проекта, что иногда бывает очень удобно!

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

    $ git clone git@github.com:user-name/repository-name.git

В текущей папке получим новую папку с названием repository-name - это и есть наш проект но уже в локальном репозитории.

P.S. Не забудьте заменить значения в ссылке (user-name и repository-name)


Все, можно приступать к работе над проектом.


Вся важная информация есть на каналах:

Живой Интеллект в Telegramm – Обязательно подпишись!

Живой Интеллект на YouTube – Обязательно подпишись!

Report Page