除非我在项目目录中,否则Git不会显示日志

时间:2014-06-06 07:08:38

标签: git

我正在尝试拨打git log,而我正在另一个目录中。我通过了.git

的位置
git log /Users/Leica/proj1

但它说"不是git repo"。如果我cd进入此目录,它可以正常工作

cd /Users/Leica/Proj1
git log

我不清楚。 git log documentation

git log [[--] <path>…]

那么我做错了什么?

3 个答案:

答案 0 :(得分:4)

这就是git的工作方式。它希望从工作副本内部运行(不必在其根目录下)。

如果你真的必须这样做(但为什么?),你可以做到

$ git --git-dir=/Users/Leica/proj1/.git log

log命令的“path”选项指的是存储库中的文件路径 (以存储库根目录为根,而不是文件系统根目录)。它将日志输出限制为与这些文件相关的提交。

答案 1 :(得分:1)

Git需要一个可在其上运行的存储库,如Thilo's answer所示。因此,有三种方法可以告诉Git在哪里找到存储库:

  1. --git-dir=<repoPath>标志,正如Thilo所回答。

  2. GIT_DIR环境变量。

  3. cd进入包含存储库目录.git的项目目录。

  4. 根据official Linux Kernel Git documentationGIT_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>选项。