2014-01-05 127 views
3

我必须访问存储在Git存储库中的一些文件,但我没有看到它们存储在存储库文件夹内的位置。从Git服务器访问存储库的文件

是否有一种特殊的方式来访问从客户端推送的各种文件?

回答

4

如果这是裸露的回购,您将无法在repo.git文件夹中找到这些文件。
请参阅“all about "bare" repos”:裸回购没有工作树,用以推动它(因为没有工作树保持同步与更新的分支)

看到这些文件最简单的方法是以克隆所述裸回购:

git clone /path/to/repo.git /path/to/repo 
1

Git仓库通常作为裸仓库存储在服务器上。这实际上是正常的.git目录的内容,并且不包括提取的工作副本。

要访问存储在这样的存储库中的文件,我建议克隆存储库。如果您想从服务器执行此操作,则可以执行类似git clone file /path/to/bare/repository /path/to/clone的操作。

2

我只知道一个黑客十岁上下的路上看到一个裸露的库文件列表,而无需克隆:

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。如果只有列表很重要,则可以避免需要克隆回购。 – VonC

相关问题