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
115 changes: 115 additions & 0 deletions git_instruction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# Инструкция по началу работы с Git

1. Введение
2. Самое начало
3. Основные команды
4. Работа с ветками
5. Работа с файлами
6. Работа с удаленными репозиториями
7. Дополнительно

## Введение

Git - система контроля версий. Она позволяет создавать и отслеживать версии файлов и эффективно работать с ними. Облегчает обращение с версиями файлов при работе в коллективе и тратит меньше компьютерной памяти, чем "традиционный" метод сохранения каждой версии в виде отдельного файла. Подробнее: [Git](https://ru.wikipedia.org/wiki/Git).

***

## Самое начало

Для начала работы с Git следует:

* Создать папку, которая в дальнейшем станет **репозиторием**
* Включить **терминал**
* Назначить папку репозиторием, инициализировав Git при помощи команды *git init*

***

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

***git init*** - объявляет папку репозиторием, инициализирует систему контроля версий.

*__git add__ file_name* - добавляет файл *file_name* к следующему сохранению версии (коммиту).

> *git add .* - добавляет все файлы в трэк.

***git commit*** - фиксирует изменения и регистрирует новую версию.

> *git commit -m "Сообщение"* - для добавления комментария к версии.

***git log*** - показывает список всех версий (коммитов) в хронологическом порядке.

> *git log --oneline* - отображает более компактный вариант списка версий.
>
> *git log --graph* - добавляет графическое отображение ветвления.

***git diff*** - показывает разницу между текущей и зафиксированной версией файла.

*__git checkout__ hash* - перемещает к версии (коммиту) с хэшем *hash*.

> *git checkout master* - возвращает к ветке *master* (например, для продолжения работы с актуальной версией).
>
> Касательно перемещения между ветками - см. подробнее далее.

***git status*** - показывает состояние рабочей папки и файлов.

*__git reset__ hash* - делает откат к коммиту с хэшем *hash*.

*__git restore__ file_name* - сбрасывает изменения в файле с состоянием *modified*.

***

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

***git branch*** - показывает список всех веток (и выделяет название ветки, в которой находишься в данный момент).

*__git branch__ branch_name* - создает новую ветку *branch_name*.

*__git checkout__ branch_name* - перемещает в ветку *branch_name*.

*__git checkout -b__ branch_name* - создает новую ветку и сразу перемещает в нее.

>*git log* отображает только историю изменений, связанных с той веткой, из которой вызвана (т.е. коммиты данной ветки и коммиты родительской ветки до создания данной ветки)!

*__git merge__ branch_name* - осуществляет слияние ветки *branch_name* с той веткой, из которой вызвана команда.

*__git branch -d__ branch_name* - удаляет ветку *branch_name*.

***

## Работа с файлами

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

+ Создать в репозитории файл под названием ***.gitignore***
+ Написать в этом файле название файла, который хотим игнорировать (с раширением)
+ Добавить ***.gitignore*** к коммиту

>Чтобы было меньше проблем - имена файлов делать на латинице и **без пробелов**.

***

## Работа с удаленными репозиториями

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

* Копирование чужого репозитория в свой аккаунт на GitHub с помощью кнопки ***Fork*** _(в случае, если нужно работать, не затрагивая напрямую исходный проект)_.
* Создание репозитория на GitHub, заполнение его в соответствии с подсказками сайта _(в случае создания собственного удаленного репозитория)_.
* Клонирование репозитория на компьютер при помощи команды *__git clone__ URL* (ссылку на репозиторий можно получить, нажав зеленую кнопку ***Code*** на сайте).
* Создание ___отдельной ветки___, в которой будут происходить все изменения.
* Отправка новой версии в удаленный репозиторий на своем аккаунте с помощью *__git push__*.
* После этого на GitHub появляется возможность отправить ***pull request*** исходному пользователю.

*__git clone__ URL* - клонирует на компьютер репозиторий, находящийся по указанному адресу.

*__git push__* - отправляет изменения с компьютера в удаленный репозиторий.

*__git pull__* - "стягивает" изменения с удаленного репозитория на компьютер.

***

## Дополнительно

* Клавиша *Tab* помогает быстрее вводить название файла.
* С помощью клавиш-*стрелок* можно быстро вызывать команды, уже использованные в терминале ранее.
* Перед сохранением версии (*git commit*) нужно не забыть сохранить изменения в файле (*Ctrl+S*)!
* ***clear*** - очищает терминал от предыдущих команд.