Использовать -C
параметр ( документы ):
git -C /home/repo log
Это почти эквивалентно --git-dir
и --work-tree
без добавления обычной папки .git
Edit:
Ответ понижен ... довольно удивительно, так как, строго говоря, это единственный правильный ответ на вопрос. Опции --git-dir
и --work-tree
не существуют для доступа к хранилищу извне рабочего дерева, они используются для перемещения .git
в другое место, и в некоторых случаях их гораздо сложнее использовать.
Например, чтобы получить журнал только /home/repo/subdir
:
git -C /home/repo/subdir log .
или
git -C /home/repo log subdir
Невозможно использовать log .
с --git-dir
или --work-tree
. Путь должен быть обработан для извлечения подпути относительно вершины рабочего дерева, и даже в этом случае git не распознает его как путь, если вы не используете опцию --
, поэтому единственный возможный путь:
git --git-dir /home/repo/.git log -- subdir
Более того, --work-tree
вообще не работает с подкомандой log
в моей версии (git 1.9.1). Это просто игнорируется:
git --git-dir /home/repo/.git --work-tree /home/repo/subdir log -- subdir
git --git-dir /home/repo/.git --work-tree /home/repo/whatever log -- subdir
Я даже не понимаю, является ли это ошибкой или функцией ... как обычно со многими вариантами дизайна git.