Могу ли я использовать git bisect для части моего хранилища?
У меня есть один репозиторий, который содержит несколько подпроектов и никаких поддеревьев или подмодулей. Теперь у меня есть ошибка в новой функции, которую нужно исправить в Project C. C зависит от проектов A и B.
Чтобы эта функция работала, мне нужна последняя версия Project A.
Где-то в проекте B была введена ошибка. Итак, мой вопрос:
Могу ли я запустить git bisect и попросить его работать только с исходным деревом Project B, сохраняя A и C в их последних версиях?
2 ответа
Нет, git bisect не поддерживает это. Вы никогда не должны делать разные проекты в одном репо. Git не любит и не поддерживает это. Вот что вы можете сделать, несмотря на это:
git bisect
в основном здесь два режима: нормальный режим и --no-checkout
Режим. Вы можете использовать любой из них для достижения своей цели различными способами:
- Нормальный: бег
git bisect
и на каждом этапе, перед тестированием, вы помещаете правильную версию ваших подпроектов в рабочее дерево с помощьюgit checkout master -- sub/project/folder
, Возможно, вам придется отменить это после тестирования, прежде чем вы можете продолжить пополам. --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
должен сделать свое дело.
Примечание. Как указано в комментариях ниже, это не удержит оставшуюся часть репо до самого последнего состояния, но разделит пополам, учитывая только те коммиты, которые внесли изменения в указанный путь.