Каков наилучший способ изменить рабочее дерево на конкретную фиксацию перед разделением пополам? - PullRequest
2 голосов
/ 19 января 2010

Мой обычный рабочий процесс при запуске сеанса git bisect:

git bisect start          # start a bisect session
git bisect bad            # I noticed that the current state is broken

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

Каков наилучший способ сделать шаг «вернуть мое рабочее дерево в старое состояние»? git reset --hard <some_good_rev>? git checkout <some_good_rev>? Что-то другое? Пожалуйста, обоснуйте свой ответ.

Ответы [ 2 ]

8 голосов
/ 19 января 2010

Я обычно не знаю, где хороший обороты, поэтому я должен найти его. Угадай, как далеко назад может быть хорошо. Допустим, 32 об. Начиная с кончика ветки и с чистыми рабочими каталогами:

$ git checkout HEAD~32

Запустите тест. Если это хороший оборот, начните делить пополам. Если это не так, вернитесь еще немного:

$ git checkout HEAD~32

Прополощите, вспените, повторите.

Почему "Git Checkout?" Потому что «git reset» изменит то, на какой коммит ветка указывает как «совет», а git checkout - нет.

1 голос
/ 19 января 2010

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

...