4 продвинутые команды git, о которых вы, вероятно, не слышали

Git — огромная программа, имеющая около 200 подкоманд и бесчисленное множество опций. Вы, вероятно, используете лишь несколько таких надежных приверженцев, как init, add, commit и Branch. Но некоторые команды выходят далеко за рамки основ и могут радикально улучшить вашу жизнь в программировании, если вы их познакомите.

Используйте git clean для генеральной очистки вашего рабочего дерева.

Мы начнем с простого, с практичной команды, которая поможет вам поддерживать чистоту вашего репозитория. Оглядываясь назад, это звучит очевидно, но вы, вероятно, раньше делали это вручную, поэтому приготовьтесь сэкономить много времени с помощью:

git clean

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

Запуск git clean удаляет этот файл, но оставляет в покое другие, включая игнорируемый git файл приветствия:

Пример выполнения команды git clean показывает, что она удаляет один неотслеживаемый файл.

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

Команда git clean, запущенная с опцией -i, показывает список файлов, которые она может удалить, с дополнительными командами для очистки всех, фильтрации или выбора отдельных файлов или обработки их один за другим.

Используйте git bisect, чтобы найти, какой коммит привел к ошибке.

Команда bisect помогает вам определить, какой коммит привел к конкретной ошибке или регрессии. Без этого такая задача потребовала бы многократной проверки каждой отдельной ревизии, возможно, с некоторыми обоснованными догадками относительно того, какая из них может быть виновата. В небольшой кодовой базе или в той, которую вы полностью понимаете, это может быть не таким уж тяжелым испытанием. В случае более крупных совместных проектов это может легко отнять слишком много драгоценного времени.

Чтобы внести ясность: git bisect далек от магии. Фактически, он предлагает тривиальное решение проблемы: бинарный поиск. Бинарный поиск — это форма решения проблем по принципу «разделяй и властвуй». В случае с git bisect это включает в себя простой процесс:

  • Определите самую раннюю плохую ревизию, которая определенно содержит проблему. Часто это текущая (или HEAD) версия.

  • Определите последнюю хорошую версию. Обычно это немного сложнее, но вы всегда можете начать гораздо раньше, чем нужно, даже с самой первой ревизией.

  • Проверьте ревизию посередине этих двух. Если все в порядке, ошибка должна быть новее; в противном случае оно старше.

  • Продолжайте повторять 3, пока не определите коммит, вызвавший ошибку.

В этом примере показан репозиторий с пятью коммитами и командами start, bad и Good пополам, устанавливающими область действия:

Команда git bisect start начинает процесс выбора конкретного коммита.

На каждом этапе git bisect проверяет новый коммит, который вы затем можете проверить, содержит ли он ошибку или нет:

Запуск программы для подтверждения ошибки, а затем проверка более ранней версии с помощью git bisect, в которой ошибка исправлена.

Как только все возможности исчерпаны, git bisect сообщает о самом раннем найденном ошибочном коммите в соответствии с вашим первоначальным выбором. Теперь вы можете запустить git сброс пополам чтобы завершить процесс и соответствующим образом устранить неверную фиксацию.

Когда git bisect понимает, что нашел источник ошибки, он отображает подробную информацию о коммите, включая сообщение о коммите и сводку изменений файла.

Это все еще может показаться трудоемким процессом, но для вас это исправление ошибок. Это намного лучше, чем беспорядочно вносить изменения, пытаясь сузить проблему. git bisect действительно ускоряет задачу, избавляя вас от необходимости проверять логи git и отдельные коммиты.

Откройте для себя git Cherry-Pick и объедините меньше ветки

Обычно, когда вы объединяете работу из двух разных ветвей, это операция по принципу «все или ничего». Команда git merge создает новый коммит, в котором каждый коммит из другой ветки применяется к текущему. Это имеет большой смысл для многих рабочих процессов, но иногда хочется внести немного больше нюансов.

Команда выбора вишни позволяет вам выбрать конкретный коммит и применить его изменения к текущей ветке как новый коммит. Обычно вы запускаете Cherry-Pick для коммита из другой ветки, так что это отличный способ, например, получить единственное изменение из гораздо более крупной функциональной ветки.

По умолчанию Cherry-Pick будет повторно использовать сообщение о фиксации, что делает эту операцию очень быстрой. Однако если вы хотите, вы можете отредактировать новое сообщение о фиксации, используя git Cherry-Pick -e идентификатор фиксации.

Если фиксация не применяется корректно, Cherry-Pick выполнит процедуру, аналогичную git merge, и попросит вас разрешить конфликты вручную.

Попробуйте git revert, чтобы отменить нежелательные коммиты.

Вы когда-нибудь сожалели о взятом на себя обязательстве после мероприятия? Если да, и вы заметили это достаточно скоро, git сброс может помочь. Но для изолированных коммитов или если вы не хотите уничтожать часть истории вашего репозитория, вам следует воспользоваться git revert.

Используйте git revert для конкретного коммита, и вы эффективно удалите этот единственный коммит. Репозиторий в конечном итоге окажется таким же, каким он был бы, если бы фиксация не произошла. Все его изменения исчезнут.

Запустите это как:

git revert 

В ответ Git создаст совершенно новый коммит, противоположный отменяя исходные изменения. Вам также будет предложено отредактировать сообщение о новом коммите, предварительно заполнив его примечанием о том, что оно отменяет конкретный коммит.

Как и в случае с выбором вишни, если возврат создает конфликты, вам будет предложено разрешить их вручную перед запуском. git вернуться –продолжить чтобы подтвердить.

2025-11-19 13:00:00


1763558102
#продвинутые #команды #git #которых #вы #вероятно #не #слышали

По теме

Read more:  Дефицит мобильного клиентского опыта обходится предприятиям в миллионы

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.