##### Разное
Отличия двух веток:
```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
или
$ git push origin :
```
Переименование последнего коммита:
```bash
git commit --amend -m "Новое название коммита"`
```
При клонировании проекта с сабмодулями:
В склонирвоанном проекте выполнить:
```bash
$ git submodule init
$ git submodule update
```
Или клонировать сразу с сабмодулями:
```bash
$ git clone --recurse-submodules https://github.com/chaconinc/MainProject
```
##### .gitignore
Удалить файлы которые ранее не были занесены файлы в .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
```