我正在尝试拨打git log
,而我正在另一个目录中。我通过了.git
git log /Users/Leica/proj1
但它说"不是git repo"。如果我cd
进入此目录,它可以正常工作
cd /Users/Leica/Proj1
git log
我不清楚。 git log
documentation说
git log [[--] <path>…]
那么我做错了什么?
答案 0 :(得分:4)
这就是git的工作方式。它希望从工作副本内部运行(不必在其根目录下)。
如果你真的必须这样做(但为什么?),你可以做到
$ git --git-dir=/Users/Leica/proj1/.git log
log命令的“path”选项指的是存储库中的文件路径 (以存储库根目录为根,而不是文件系统根目录)。它将日志输出限制为与这些文件相关的提交。
答案 1 :(得分:1)
Git需要一个可在其上运行的存储库,如Thilo's answer所示。因此,有三种方法可以告诉Git在哪里找到存储库:
--git-dir=<repoPath>
标志,正如Thilo所回答。
GIT_DIR
环境变量。
cd
进入包含存储库目录.git
的项目目录。
根据official Linux Kernel Git documentation,GIT_DIR
默认情况下设置为查找.git
目录(在当前工作目录中?):
如果设置了
GIT_DIR
环境变量,则它指定要使用的路径,而不是默认的.git
作为存储库的基础。--git-dir
命令行选项也设置此值。
答案 2 :(得分:1)
Git log的路径选项仅用于过滤git存储库中的目录。 例如
cd /Users/Leica/Proj1
git log ChildDirectory
只会给你一个关于Proj1/ChildDirectory
的日志,所以如果Proj1目录中有一个提交对ChildDirectory没有影响,它就不会出现。
如果您想使用其他目录中的git,则需要传递--git-dir=<pathToRepository>
选项。