##### <font color = "#1D8571">Разное</font>
Отличия двух веток:
```bash
$ git diff ветка1 ветка2
```
Список отличающихся файлов:
```bash
$ git diff --name-only ветка1 ветка2
```
Список со статусом каждого файла:
```bash
$ git diff --name-status ветка1 ветка2
```
Сравнение файлов из двух веток:
```bash
$ git diff main new_branch ./diff_test.txt
```
Отменить последний коммит (если не было push):
```bash
$ git reset --soft HEAD^`
```
Удалить ветку на сервере:
```bash
$ git push origin --delete <branchName>
или
$ git push origin :<branchName>
```
Переименование последнего коммита:
```bash
git commit --amend -m "Новое название коммита"
```
При клонировании проекта с сабмодулями:
В склонирвоанном проекте выполнить:
```bash
$ git submodule init
$ git submodule update
```
Или клонировать сразу с сабмодулями:
```bash
$ git clone --recurse-submodules https://github.com/chaconinc/MainProject
```
Создать сабмодуль в репозитории:
```bash
$ git submodule add <url> # склонирует репозиторий в качестве сабмодуля
```
##### <font color = "#1D8571">.gitignore</font>
Удалить файлы которые ранее не были занесены файлы в .gitignore
```bash
git rm file1.txt
git commit -m "remove file1.txt"
```
Но если вы хотите удалить файл только из Git репозитория и не удалять с файловой системы, то используйте:
```bash
git rm --cached file1.txt
git commit -m "remove file1.txt"
git push origin branch_name
```

Теги
```bash
# Сделать тег
$ git tag <tagnamme>

# Отправка тега на сервер
$ git push origin <tagname>

# Удалить тег локально
$ git tag -d <tagname>

# Удалить таг на сервере
$ git push origin --delete <tagname>
```

Конфликты

```bash
$ git checkout --theirs <path to file>
```
#### <font color = "MediumSeaGreen">Pro SVN</font>
https://svnbook.red-bean.com/ru/1.4/svn.tour.cycle.html
