Git не будет показывать журнал, если я не в каталоге проекта
Я пытаюсь вызвать git log
, пока я в другом каталоге. Я передаю местоположение, где .git
git log /Users/Leica/proj1
но он говорит "не репозиторий git". Если я cd
в этот каталог, он отлично работает
cd /Users/Leica/Proj1
git log
Это мне непонятно. git log
документация говорит
git log [[--] <path>…]
Так что я делаю неправильно?
Ответы
Ответ 1
Вот как работает git. Он хочет быть запущенным из рабочей копии (не обязательно должен быть в корне).
Если вы действительно должны это сделать (но почему?), вы могли бы сделать
$ git --git-dir=/Users/Leica/proj1/.git log
Параметр "путь" команды журнала относится к пути к файлу в репозитории (корневой каталог корневого каталога репозитория, а не корневой файловой системы). Он ограничивает вывод журнала в соответствии с данными файлами.
Ответ 2
Git нужен репозиторий для работы, о чем свидетельствует Thilo answer. Таким образом, вы можете указать Git три способа найти репозиторий:
-
Флаг --git-dir=<repoPath>
, как ответил Тило.
-
Переменная среды GIT_DIR
.
-
cd
в каталог проекта, содержащий каталог репозитория .git
.
В соответствии с официальной версией Linux Kernel Git, GIT_DIR
установлен для поиска каталога .git
(в текущий рабочий каталог?) по умолчанию:
Если установлена переменная среды GIT_DIR
, она указывает путь к использованию вместо стандартного .git
для базы репозитория. Опция командной строки --git-dir
также устанавливает это значение.
Ответ 3
Git параметр пути к журналу предназначен только для фильтрации каталогов в репозитории git.
Например
cd /Users/Leica/Proj1
git log ChildDirectory
предоставит вам журнал только о Proj1/ChildDirectory
, поэтому, если в каталоге Proj1 есть коммит, что не влияет на ChildDirectory, он не появится.
Если вы хотите использовать git из другого каталога, вам нужно передать опцию --git-dir=<pathToRepository>
.