---
# System prepended metadata

title: ГАЙД ПО РАБОТЕ С GIT

---

# ГАЙД ПО РАБОТЕ С 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
![](https://i.imgur.com/YjobwnN.jpg)

### Создание коммита:
```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 *название репозитория* #вывести информацию об репозитории
```