Проверьте, является ли каталог git-репозиторием (без необходимости записи в него)

Какую команду оболочки я могу использовать, используя полный путь к каталогу, определить, является ли данный каталог репозиторием git? В частности, я хотел бы иметь возможность сделать это, не находясь в каталоге, и не должен вставлять его в него. Я также хотел бы иметь возможность сделать это с помощью команды, которая возвращает простое "истинное" или "ложное" (почти так, как это делает rev-parse -is-inside-work-tree), но это не требование,

Ответ 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.