我必须访问存储在Git存储库中的一些文件,但我看不到它们存储在存储库文件夹中的位置。
是否有一种特殊的方式来访问从客户端推送的各种文件?
答案 0 :(得分:5)
如果这是一个裸仓库,您将无法在repo.git
文件夹中找到这些文件
请参阅“all about "bare" repos”:裸仓库没有工作树,用于推送它(因为没有工作树可以与更新的分支保持同步)
查看这些文件的最简单方法是克隆所述裸仓:
git clone /path/to/repo.git /path/to/repo
答案 1 :(得分:3)
我知道只有一种黑客方式可以在没有克隆的情况下查看裸存储库中的文件列表:
GIT_DIR=/path/to/bare.git git log --pretty=format: --name-only --diff-filter=A
您可能希望对该输出进行排序并排除空行:
GIT_DIR=/path/to/bare.git git log --pretty=format: --name-only --diff-filter=A | sort | grep .
查看文件的内容非常简洁:
GIT_DIR=/path/to/bare.git git show HEAD:path/to/file
如果您希望从裸存储库中获取特定文件,而不是整个存储库,则可以将git show
的输出重定向到文件。
顺便说一下,GIT_DIR=... git cmd
相当于git --git-dir=... cmd
答案 2 :(得分:1)
Git存储库通常作为裸存储库存储在服务器上。这实际上是普通.git
目录的内容,不包括提取的工作副本。
要访问存储在此类存储库中的文件,我建议克隆存储库。如果您想从服务器执行此操作,可以执行git clone file /path/to/bare/repository /path/to/clone
。