# ГАЙД ПО РАБОТЕ С GIT
> [Скачать GIT](https://git-scm.com/download)
## Первоначальная настройка:
> Выполняется только один раз
```cmd=
git config --global user.name "*Имя*"
git config --global user.email "*Почта*"
```
## Работа с репозиторием:
**Все действия выполняются в корневой папке репозитория**
### Создание репозитория:
```cmd=
git init
```
### Скачать существующий репозиторий:
```cmd=
git clone *ссылка*
```
**Например**
```bash=
git clone https://github.com/novagc/prog_hw.git
```
### Как получить ссылку на репозиторий GitHub

### Создание коммита:
```cmd=
git status # проверить, есть ли незакомиченные изменения
git add *имя файла или . (все файлы)* # добавить в кеш
git commit -m "комментарий" # закоммитить файлы, добавленные в кеш
```
### Загрузка коммитов на удалённый репозиторий:
> загружаются ВСЕ сделанные ранее коммиты (кроме тех, что уже загружены)
```cmd=
git push
```
### Загрузка изменений с удалённого репозитория:
```cmd=
git fetch # скачивает изменения с удалённого репозитория
git merge *название ветки* # объединяет скачанные изменения ветки удалённого репозитория и активную ветку
```
#### Или
```cmd=
git pull [--rebase] # скачивает изменения с удалённого репозитория и автоматически пытается их объединить
```
### Ветки:
```cmd=
git branch # список существующих веток
git checkout -b *название ветки* # создать ветку
git checkout *название ветки* # переключение на ветку
git merge *название ветки*
```
#### Или
```cmd=
git rebase *название ветки* #объединить текущую ветку с веткой *название ветки*
```
> В новой ветке находятся файлы, которые были в открытой ветке на момент создания новой ветки
>
> Изменение закоммиченные в одной ветке отсутсвуют в другой
>
> Если при объединении веток нашлись конфликтующие изменения, то при попытке коммита гит выведет список файлов с конфликтами
### Основные команды:
```cmd
git init #инициализировать репозиторий
git status #проверить статус файлов
git add . #добавить все файлы в кеш
git commit -m "*комментарий*" #создать слепок проекта
git push -u origin *ветка* #загрузить коммиты на удалённый репозиторий
git remote add origin *ссылка* #подключится к репозиторию
git clone *ссылка* #клонировать репозиторий (загрузить)
git log --oneline #вывести список всех коммитов с основной информацией
git remote show *название репозитория* #вывести информацию об репозитории
```