【问题标题】:git ls-files in bare repository裸存储库中的 git ls-files
【发布时间】: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 来显示。但是我如何才能真正获得我知道在我的存储库中的文件列表?

【问题讨论】:

    标签: git git-bare git-ls-files


    【解决方案1】:

    你可以试试其他列出文件的命令:

    git ls-tree --full-tree -r HEAD
    

    根据to this comment,命令git ls-treebare 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 什么也没返回。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2013-01-14
    • 2015-09-30
    • 2017-07-26
    • 1970-01-01
    • 2013-01-29
    • 2020-08-06
    相关资源
    最近更新 更多