У меня недавно была похожая проблема при попытке отладки / обновления библиотеки, которую необходимо было правильно установить в системе (используя make install ) и переходить между последней стабильной версией и версией для разработки.
Начиная с версии 2.6.0 (примерно через три года), теперь вы можете использовать
git worktree
. По сути, она позволяет вам превратить любой каталог в любом месте в приложение официального локального gitрепозиторий.Это делается путем заполнения текстового файла .git
(вместо обычного подкаталога) на верхнем уровне, содержащего информацию, указывающую на исходный.Со стороны хранилища это приложение объявляется как таковое, и создается новая ветвь.
Следовательно, теперь у вас есть возможность выполнить git checkout
одновременно для двух разных ревизий (по одной на рабочий каталог).И вы можете добавить столько приложений, сколько вам нужно.Когда вы закончите, просто удалите все бесполезные приложения, затем вызовите git worktree prune
, чтобы заставить его отклонить все, что больше не существует (вы можете использовать git worktree lock
, чтобы предотвратить удаление некоторых из них, если каталог их приложений иногда недоступенсо съемными устройствами, например).Это позволит вам скомпилировать две разные версии одного и того же приложения одновременно.
Если, однако, вам нужно получить конкретную ревизию вашей программы, но вы не можете сказать, какая из них перед тем, как скомпилировать ее.вы можете вместо этого использовать
git bisect run
…, который автоматически вызовет скрипт, который сообщит, является ли ревизия хорошей или плохой.Это полезно, когда компиляция довольно длинная, и когда весь поиск может занимать несколько дней.
Вот ссылка на страницу документации , относящуюся к git worktree .