Какую команду оболочки я могу использовать, используя полный путь к каталогу, определить, является ли данный каталог репозиторием git? В частности, я хотел бы иметь возможность сделать это, не находясь в каталоге, и не должен вставлять его в него. Я также хотел бы иметь возможность сделать это с помощью команды, которая возвращает простое "истинное" или "ложное" (почти так, как это делает rev-parse -is-inside-work-tree), но это не требование,
Проверьте, является ли каталог git-репозиторием (без необходимости записи в него)
Ответ 1
Используйте git -C <path> rev-parse
. Он вернет 0, если каталог в <path>
является репозиторием git и кодом ошибки в противном случае.
Ответ 2
Любой каталог в системе может быть рабочей копией git. Вы можете использовать каталог, как если бы он содержал подкаталог .git
, установив переменные окружения GIT_DIR
и GIT_WORK_TREE
чтобы указать фактический каталог .git
и корень вашей рабочей копии или использовать команды --git-dir
и --work-tree
вариантов вместо. Более подробную информацию см. на странице git man.
Ответ 3
Мы также можем попробовать git status
команду git status
и если результат будет выглядеть следующим образом:
fatal: Not a git repository (or any of the parent directories):.git
Затем каталог не является репозиторием git.