Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 137 additions & 0 deletions Инструкция по работе с Git.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# Инструкция по работе с git 06.08.2024

[Отличный набор видео по Git (скринкаст по git от Ilya Kantor)](https://vimeo.com/showcase/5616060 )

[Тренажер по git](https://learngitbranching.js.org/?locale=ru_RU)

Статья на Хабр git для новичков [часть 1](https://habr.com/ru/articles/541258/) , [часть 2](https://habr.com/ru/articles/542616/)

От Николая Мануйлова (GB) [Настройка репозитория](https://www.atlassian.com/ru/git/tutorials/setting-up-a-repository/), [Сохранение изменений](https://www.atlassian.com/ru/git/tutorials/saving-changes/),
[Проверка репозитория](https://www.atlassian.com/ru/git/tutorials/inspecting-a-repository/),
[Отмена изменений](https://www.atlassian.com/ru/git/tutorials/undoing-changes/);

## Установка git

Установи git с [сайта.](https://git-scm.com/)

Далее работа с git происходит через Терминал (командную стороку).

## Начало работы с git

Для начала представься git. Для этого в терминале введи 2 (две) команды:

* <span style="color: yellow;">git </span> config --global user.name «твое имя английскими буквами»
* <span style="color: yellow;">git </span> config --global user.email твоя почта@example.com
* Создаем/выбираем папку которую будет отслеживать git - репозиторий. В ней будут храниться все файлы для отдельного проекта.
* Превращаем папку в репозиторий, для этого переходим в нужную папку и используем команду: <span style="color: yellow;">git </span> init
* Создаем файл внутри репозитория и добавляем его для отслеживания командой: <span style="color: yellow;">git </span> add file.md (обязательно укажи расширение)

Поздравляю! можно приступать к работе.

## Основные команды git

* <span style="color: yellow;">git </span> init
* Инициализация репозитория: git init превращает обычную папку проекта в Git-репозиторий.


* <span style="color: yellow;">git </span> add file.md
* Добавление новых файлов для отслеживания git;
* Добавление изменений в существующих файлах.

* <span style="color: yellow;">git </span> commit <span style="color: gray;">-m</span> "text"
[подробнее о git commit и git add](https://www.atlassian.com/ru/git/tutorials/saving-changes)
* используется для создания нового коммита в Git. Коммит представляет собой снимок текущего состояния вашего проекта в определенный момент времени. Он включает изменения, добавленные в индекс с помощью команды git add, а также комментарий, описывающий изменения в коммите.

<u>Вот несколько важных аспектов команды git commit:</u>

1. Создание коммита: Вы вызываете git commit после того, как добавили изменения в индекс с помощью git add. Команда создает новый коммит, используя текущее состояние индекса и указанный комментарий.

2. Комментарий коммита: Каждый коммит должен содержать комментарий, который описывает изменения, внесенные в коммите. Хорошая практика - написать информативное и понятное сообщение, объясняющее, что было сделано в коммите.

3. Уникальный идентификатор коммита: Каждый коммит имеет уникальный идентификатор SHA-1, который позволяет однозначно идентифицировать коммит в истории версий.
* <span style="color: yellow;">git </span> status [подробнее о git status](https://www.atlassian.com/ru/git/tutorials/inspecting-a-repository)

1. используется в Git для отображения текущего состояния вашего репозитория

<u>Вот несколько важных аспектов команды git status:</u>

2. Отслеживаемые и неотслеживаемые файлы: git status показывает список измененных файлов, которые Git отслеживает в вашем репозитории. Это включает новые файлы, измененные файлы и удаленные файлы. Кроме того, она также указывает на неотслеживаемые файлы, которые не включены в Git.

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

4. Незакоммиченные изменения: git status показывает изменения, которые находятся в вашем рабочем каталоге, но еще не добавлены в индекс или закоммичены. Это позволяет вам видеть, какие изменения ожидают коммита.

* <span style="color: yellow;">git </span> log
* используется для просмотра истории коммитов в Git.


<u>Вот несколько важных аспектов команды git log:</u>

1. Список коммитов: git log отображает список коммитов, начиная с последнего коммита и заканчивая самым ранним коммитом. Каждый коммит представлен сводкой с информацией, включающей идентификатор коммита (SHA-1), автора, дату и комментарий.

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

3. Опции форматирования: git log имеет множество опций форматирования, позволяющих настроить вывод истории коммитов. Например, вы можете использовать флаг --oneline, чтобы получить более краткую сводку коммитов, или флаг --author для фильтрации коммитов по автору, git log --graph, для отображении истории в виде дерева.

* <span style="color: yellow;">git </span> branch

* используется в Git для работы с ветками репозитория. Она позволяет просматривать, создавать и управлять ветками в вашем проекте.

<u>Примеры использования команды git branch:</u>

1. git branch - просмотреть список всех существующих веток.
2. git branch new_branch - создать новую ветку с именем new_branch.
3. git checkout -b branch name - создать ветку и сразу на нее переместиться;
4. git branch -d branch_name - удалить ветку с именем branch_name.
5. git branch -m new_branch_name - переименовать текущую ветку на new_branch_name.
6. git branch --delete имя ветки. - команда удаляет ветку.

* <span style="color: yellow;">git </span> checkout [отмена коммитов и изменений](https://www.atlassian.com/ru/git/tutorials/undoing-changes)

* используется для переключения между ветками, восстановления файлов из предыдущих коммитов или переключения на конкретные коммиты.

<u>Примеры использования команды git checkout:</u>

1. git checkout branch_name - переключиться на указанную ветку branch_name.
2. git checkout -b new_branch - создать новую ветку new_branch и переключиться на нее.
3. git checkout commit_hash - переключиться на указанный коммит с идентификатором commit_hash.


* <span style="color: yellow;">git </span> diff
* используется в Git для отображения различий между состояниями файлов и коммитами в вашем репозитории.

<u>Примеры использования команды git diff:</u>

1. git diff - просмотреть изменения между рабочим каталогом и последним коммитом.
2. git diff --staged - просмотреть изменения между индексом и последним коммитом.
3. git diff commit1 commit2 - сравнить два коммита и просмотреть изменения между ними.

## Работа с git в команде (работа с удаленным репозиторием)

[Подробная инструкция по настройке репозитория](https://www.atlassian.com/ru/git/tutorials/setting-up-a-repository)

1. Для работы с удаленным репозиторием зарегистрируйся на [Github](https://github.com/)
2. Создаем публичный новый репозторий во вкладке Repositorys
3. Следуя инструкции Github привязываем новый публичный репозиторий к своему локальному репозиторию.

### *Как сделать pull request*
* Делаем **fork** (ответвление) репозитория
* Делаем git clone **своей** версии репозитория
* Создаем новую ветку и в нее вносим свои изменения
* фиксируем изменения (делаем коммиты)
* Отправляем свою версию в свой GitHub
* На сайте GitHub нажимаем кнопку **pull request**


## Принципы работы с git

* Ветка master или main - чистовик. Код пишется на отдельных ветках (часто разными людьми) и по мере готовности добавляется в чистовик;
* Удалять комиты - плохой тон;
* в git добавляются только текстовые файлы, остальные файлы (например: изображения) храняться отдельно, это делается для целей экономии памяти;

## Как работать с git быстрее
* используй стрелки, для вызова предыдущих команд;
* используй tab для создания быстрой ссылки на файл при создании команды;
* Не забывай переключаться между языками, например при написании команды "q" - выход;
* "делай ветки чаще делай ветки сейчас", чтобы создать ветку и сразу прыгнут на нее используй комантду - <span style="color: yellow;">git </span> checkout -b название ветки
* команда <span style="color: yellow;">clear </span> очищает терминал