Могу ли я использовать git bisect для части моего хранилища?

У меня есть один репозиторий, который содержит несколько подпроектов и никаких поддеревьев или подмодулей. Теперь у меня есть ошибка в новой функции, которую нужно исправить в Project C. C зависит от проектов A и B.

Чтобы эта функция работала, мне нужна последняя версия Project A.

Где-то в проекте B была введена ошибка. Итак, мой вопрос:

Могу ли я запустить git bisect и попросить его работать только с исходным деревом Project B, сохраняя A и C в их последних версиях?

2 ответа

Решение

Нет, git bisect не поддерживает это. Вы никогда не должны делать разные проекты в одном репо. Git не любит и не поддерживает это. Вот что вы можете сделать, несмотря на это:

git bisect в основном здесь два режима: нормальный режим и --no-checkout Режим. Вы можете использовать любой из них для достижения своей цели различными способами:

  1. Нормальный: бег git bisect и на каждом этапе, перед тестированием, вы помещаете правильную версию ваших подпроектов в рабочее дерево с помощью git checkout master -- sub/project/folder, Возможно, вам придется отменить это после тестирования, прежде чем вы можете продолжить пополам.
  2. --no-checkout: бежать git bisect start --no-checkout, Теперь шаги не будут влиять на ваш репо, кроме установки BISECT_HEAD ссылка. Используйте эту ссылку, чтобы проверить только projectB: git checkout BISECT_HEAD path/to/projectB, Теперь сделай свой тест.

Я бы порекомендовал --no-checkout метод. И обратите внимание, что хотя совет 3lectrologos не сработал, он все же полезен. Давать путь ProjectB к git bisect позволит использовать тот факт, что ошибки могли быть внесены только в версии, содержащие изменения в ProjectB.

Я думаю git bisect start -- path/to/projectB должен сделать свое дело.

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

Другие вопросы по тегам