Найти в Дзене
Герман Геншин

4 неожиданные команды Git, которыми почти никто не пользуется — вы будете в шоке, сколько времени они экономят

Git — это целая вселенная из сотен команд и настроек, но большинство разработчиков используют лишь пару-тройку базовых: init, add, commit, branch. Тем временем существуют инструменты, которые гораздо мощнее и действительно могут прокачать ваш рабочий процесс. Именно о таких командах сегодня и пойдет речь. Начнем с команды, которую многие чистят “вручную”. С git clean наведете идеальную чистоту в репозитории буквально в один клик: git clean вычищает все неотслеживаемые файлы из вашей рабочей директории. То есть всякий мусор — скомпилированные объекты, временные файлы, бэкапы и прочее ненужное, не добавленное в репозиторий, — исчезает без следа. Например, в проекте появился неотслеживаемый файл: После выполнения git clean этот файл исчезает, а игнорируемые файлы (например, hello из .gitignore) — остаются на месте: Кто работал с Make, тот сразу узнает аналогию — это фактически make clean для вашего git-проекта. По умолчанию git clean не трогает неотслеживаемые папки, но если использовать
Оглавление

Git — это целая вселенная из сотен команд и настроек, но большинство разработчиков используют лишь пару-тройку базовых: init, add, commit, branch. Тем временем существуют инструменты, которые гораздо мощнее и действительно могут прокачать ваш рабочий процесс. Именно о таких командах сегодня и пойдет речь.

Используйте git clean: наводите порядок в проекте одним движением

Начнем с команды, которую многие чистят “вручную”. С git clean наведете идеальную чистоту в репозитории буквально в один клик:

git clean вычищает все неотслеживаемые файлы из вашей рабочей директории. То есть всякий мусор — скомпилированные объекты, временные файлы, бэкапы и прочее ненужное, не добавленное в репозиторий, — исчезает без следа. Например, в проекте появился неотслеживаемый файл:

-2

После выполнения git clean этот файл исчезает, а игнорируемые файлы (например, hello из .gitignore) — остаются на месте:

-3

Кто работал с Make, тот сразу узнает аналогию — это фактически make clean для вашего git-проекта.

По умолчанию git clean не трогает неотслеживаемые папки, но если использовать опцию -d, он уберет и их. Совет: перед реальной чисткой запустите с флагом -n — увидите, что именно будет удалено. А чтобы выборочно удалить нужные файлы, используйте режим -i — сможете отметить их вручную:

-4

Шок! git bisect за секунды находит, в каком коммите затаилась ошибка

Команда bisect — ваш личный детектив для поиска багов. Она мгновенно определяет, в каком коммите спряталась ошибка или что-то пошло не так. Если делать это вручную — будете копаться в каждом коммите часами или полагаться на удачу. На небольшом проекте это терпимо, но в крупном репозитории с десятками авторов можно зависнуть на несколько дней.

Вся “магия” — в обычном бинарном поиске. Вы указываете коммит, где еще все работало (good), и коммит, в котором баг уже есть (bad), — а дальше git bisect сам переключается между промежуточными вариантами:

Вот пример: проект с пятью коммитами. Начинаете с команд bisect start, bad и good:

-5

На каждом шаге bisect перескакивает на очередной коммит; ваша задача — потестировать, есть баг или уже нет.

-6

Закончив — bisect покажет тот самый злосчастный коммит. Дальше нужно всего лишь выполнить git bisect reset — и можно устранять ошибку!

-7

Может показаться, что это долго, но на деле bisect спасает вас от бесконечного “гадай-коммит” и экономит уйму времени.

Попробуйте git cherry-pick: забирайте только нужный коммит — никаких лишних изменений!

При обычном слиянии (git merge) все коммиты одной ветки сразу попадают в другую. Это удобно, но не всегда нужно: иногда хочется перетащить только одно конкретное изменение, а не весь ворох чужих коммитов.

git cherry-pick создан как раз для таких ситуаций — он переносит отдельный коммит из любой ветки прямо в вашу. Идеально, когда вам нужно быстро получить только исправления или фичу из большой ветки.

При использовании cherry-pick новый коммит создается с тем же описанием. Хотите изменить комментарий — воспользуйтесь git cherry-pick -e commit-id.

Если возникнут конфликты, как при merge, — решаем вручную, а затем продолжаем работу.

Опрометчивый коммит? git revert исправит ошибку без следа и не порушит историю!

Каждому знакома ситуация: сделал коммит — а потом пожалел. Если накосячили недавно, спасет git reset. Но если ошибка уже в общем репозитории, или переписывать историю нельзя — помогает git revert.

Вызываете git revert с нужным коммитом — и он будто бы исчезает: изменения отменены, а история проекта остается чистой. Все лишние строки будут удалены.

Синтаксис элементарен:

Git сразу создаст новый коммит с обратными изменениями. В комментарии автоматически появится ссылка на отменяемый коммит.

Если при откате возникли конфликты (аналогично cherry-pick), разберите их вручную и завершите процесс через git revert --continue.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: