裸仓库中的git ls-files命令

48

我想访问一个裸的git存储库,并列出存储库中的所有文件。

在普通的git存储库中,我可以轻松地运行 git ls-files 来做到这一点。

示例输出:

$ git ls-files
README.md
file1.js
file2.js
file3.js
folder1/file4.js
folder2/file5.js
在一个裸的 Git 仓库中,这个操作会默默地失败。它不会返回任何文件(但会成功退出)。

在一个裸的 Git 仓库中,这个操作会默默地失败。它不会返回任何文件(但会成功退出):

$ cd my-bare-repository
$ git ls-files #returns nothing
$ echo $? #print exit code from previous command
$ 0

现在我知道我必须提供一个有意义的分支或主分支来显示。但是,我如何实际上获取我知道存在于我的存储库中的文件列表?

1个回答

79

谢谢,这个很有效。然而,在我的现有示例中,使用或不使用“--full-tree”都会得到相同的输出。 - Jesper Rønn-Jensen
7
您可以使用命令 git ls-tree --full-tree -r --name-only HEAD 列出文件名(不包括权限和 blob SHA 值等无关信息)。 - VonC
我接受这个答案,因为它超出了我的要求:) +10 分钟的正确性,+10 分钟的快速回答 :) - Jesper Rønn-Jensen
git ls-files 在我使用的 git 2.27 裸仓库中可用,很可能在此之前就已经支持了。 - Victor Roetman
1
@VictorRoetman 是的:它可以列出索引中的文件。默认情况下(https://git-scm.com/docs/git-ls-files)。从技术上讲,裸仓库可以有一个索引(https://github.com/libgit2/libgit2sharp/issues/1491#issuecomment-328624372)。但在我的裸仓库中,“git ls-files”没有返回任何内容。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接