# Git: Полезные команды Git: Удаляем Мусор, Конфликты, Фиксим commit-messages ___ Многие команды из списка реализованы в изпользуемых *Git UI тулах* (Git Extensions), но лучше юзать команды через консоль, чтобы понимать, что происходит "под капотом". Тем более, что UI тулы могут дико тупить и делать не то. Консоль -> :fire: :fire: :fire: ___ **1. Сборщик Мусора:** ```bash= git gc ``` убирает лишние объекты в памяти. Fetch и Push теперь должны выполняться быстро, а не по 7-10 мин **2. Откат коммита из локальной ветки:** ```bash= git reset --soft HEAD^ ``` **3. Поменять сообщение у запушенного коммита(например, если не отработал Left hook)** -Откатываем коммит: ```bash= git commit --amend ``` *amend - позволяет добавить к последнему коммиту новые изменения.* Пруф: https://www.atlassian.com/git/tutorials/rewriting-history - [ ] Потом обновляем коммит в удаленной ветке через: `git push -f origin head` или Юзаем **cherry pick** (Draft - Нужно расписать) **4. Показать текущую ветку (бывает полезно, когда подвисает Git tool в Visual Studio) и список измененных файлов** ```bash= git status ``` **5. Показать список коммитов с информацией о них** ```bash= git log --pretty=format:"%h%x09%an%x09%ad%x09%s ``` **6. Чтобы временно "спрятать" изменения при переключении между ветками** ```bash= git stash (с опциями) ``` ### Следующие команды надо применять внимательно, чтобы не потерять изменения: 8. изменение последнего коммита ```bash= git commit --amend - ``` 9. отмена изменений через создание нового коммита, https://www.atlassian.com/git/tutorials/undoing-changes/git-revert ```bash= git revert ``` 10. сброс последних коммитов https://www.atlassian.com/git/tutorials/undoing-changes/git-reset . ```bash= git reset (c опциями) ``` 11. удаление локальной ветки. Сейчас может не потребоваться, но в текущей работе при активном создании своих и скачивании с репозитория чужих веток (например, для ревью) их количество разрастается, что может привести к путанице с добавлением коммитов (список локальных веток в консоли можно посмотреть через команду git branch --list) ```bash= git branch -d <branch_name> ``` (список локальных веток в консоли можно посмотреть через команду ```bash= git branch --list ``` **11.:biohazard_sign: Устранение конфликтов, если точно уверен, что их нет, но Git ругается:** ```bash= git conflict resolved ``` **Note:** супер-редкий кейс и лучше просто так не использовать ###### tags: `Git` `draft`