裸存储库中的 git ls-files
Posted
技术标签:
【中文标题】裸存储库中的 git ls-files【英文标题】:git ls-files in bare repository 【发布时间】:2014-11-12 09:53:07 【问题描述】:我想访问一个裸 git 存储库,我想列出存储库中的所有文件。
在普通的 git 存储库中,我可以通过运行 git ls-files
轻松做到这一点。
示例输出:
$ git ls-files
README.md
file1.js
file2.js
file3.js
folder1/file4.js
folder2/file5.js
在一个裸 git 存储库中,这会默默地失败。它只是不返回任何文件(但成功退出):
$ cd my-bare-repository
$ git ls-files #returns nothing
$ echo $? #print exit code from previous command
$ 0
现在我知道我必须提供一个有意义的分支或 master 来显示。但是我如何才能真正获得我知道在我的存储库中的文件列表?
【问题讨论】:
【参考方案1】:你可以试试其他列出文件的命令:
git ls-tree --full-tree -r HEAD
根据to this comment,命令git ls-tree在bare repo中有效。
【讨论】:
谢谢,这行得通。但是,在我当前的示例中,无论有无--full-tree
,我都会得到相同的输出
@JesperRønn-Jensen 你也有 git ls-tree --full-tree -r --name-only HEAD
,只列出文件名,(没有关于权限和 blob SHA 值的主要内容)
我接受这个答案,因为它超出了我的要求:) +10 表示正确,+10 表示快速回答 :)
git ls-files
在带有 git 2.27 的裸存储库中为我工作,并且现在可能已经支持它一段时间了。
@VictorRoetman 是的:它可以列出索引中的文件。默认情况下 (git-scm.com/docs/git-ls-files) 从技术上讲,裸存储库可以有一个索引 (github.com/libgit2/libgit2sharp/issues/…)。但在我的裸仓库中,git ls-files
什么也没返回。以上是关于裸存储库中的 git ls-files的主要内容,如果未能解决你的问题,请参考以下文章