#git #github #directory
Вопрос:
Допустим, у меня есть два репозитория, с которыми я регулярно взаимодействую. Например, repo1
И. repo2
Допустим, я только что принял решение и внес изменения в repo1, но теперь мне нужно поработать в repo2.
За кулисами, как git понимает, что я больше не взаимодействую с repo1, а теперь с repo2? (Это так же просто, как перейти в каталог, в котором находится локальный филиал repo2?) Нужно ли мне использовать какой-то язык командной строки, чтобы сообщить git, что я переключаю внимание на repo2?
Ответ №1:
По умолчанию Git выполняет автоматическое обнаружение репозитория на основе каталога, в котором он вызывается. При выполнении автоматического обнаружения он просматривает текущий каталог, чтобы узнать, есть ли .git
папка или ссылка git, а если ее нет, повторяет процесс для родительского каталога и так далее, пока не попадет в корень файловой системы или точку монтирования. Если он находит репозиторий, он устанавливает каталог, содержащий соответствующую .git
запись, в качестве корня рабочего дерева, а .git
папку в качестве каталога git.
Вы можете выбрать работу автоматического обнаружения на основе другого каталога, используя -C
флаг, который должен предшествовать имени команды (например, git -C DIR status
), и вы также можете явно указать каталоги, используя параметры командной строки или переменные среды. Они могут быть полезны, когда вы хотите управлять подмодулем или другим репозиторием, но не хотите изменять каталоги.
Однако большинство из них являются необычными ситуациями, и в большинстве случаев Git определяет репозиторий на основе текущего каталога. Поэтому переключить внимание на repo2 так же просто, как перейти в какой-нибудь каталог в repo2. В Unix это так же просто, как что-то вроде cd ~/checkouts/repo2
.