Отслеживание багов в кодовой базе Git

GitGitBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

Ручное нахождение коммита, в котором был обнаружен баг

Ваша задача - вручную найти коммит, в котором был обнаружен баг в репозитории git-playground. Репозиторий можно найти по адресу https://github.com/labex-labs/git-playground. Bug заключается в том, что файл file2.txt должен выводить "This is file2.txt.", а не "This is file2.".

Для завершения этой лабораторной работы вам понадобится использовать команду git bisect для выполнения бинарного поиска по истории коммитов репозитория. Вам нужно будет помечать коммиты как "хорошие" (без багов) или "плохие" (с багами), пока вы не сузите поиск до коммита, в котором был обнаружен баг.

  1. Перейдите в директорию репозитория:
cd git-playground
  1. Запустите процесс git bisect:
git bisect start
  1. Пометьте текущий коммит как "плохой":
git bisect bad HEAD
  1. Пометьте коммит с сообщением "Initial commit" как "хороший". Git автоматически переключит вас на новый коммит для тестирования:
git bisect good 3050fc0de

Git автоматически переключит вас на новый коммит для тестирования. 5. Если содержимое проверенного файла file2.txt не соответствует багу, пометьте его как "хороший":

cat file2.txt
git bisect good
  1. Если содержимое проверенного файла file2.txt соответствует багу, пометьте его как "плохой":
git bisect bad
  1. Как только вы найдете коммит с багом, сбросьте процесс git bisect:
git bisect reset

Теперь вы можете изучить изменения кода в коммите с багом, чтобы найти источник бага.

Вот результат теста:

d22f46ba8c2d4e07d773c5126e9c803933eb5898 is the first bad commit
commit d22f46ba8c2d4e07d773c5126e9c803933eb5898
Author: Hang <[email protected]>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file2.txt

 file2.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 file2.txt

Резюме

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