2013-03-07 246 views
5

我在github上有一个项目,我想在我的服务器上进行镜像。当做一个git克隆--mirror在哪里的实际文件?

我试过以下内容:git clone --mirror [email protected]:user/repo.git

然后在repo.git目录中,我有以下文件结构(例如,输出ls):

FETCH_HEAD branches/ description info/ packed-refs HEAD config hooks/ objects/ refs/

所以我的问题是:哪里是我的文件!?看起来好像有一堆git相关的东西,但我找不到我写的代码。我错过了明显的东西吗?

btw,git status返回fatal: This operation must be run in a work treegit branch返回分支。奇怪的。

回答

7

当你git clone --mirror,它生成一个裸仓库,所以它不会有一个工作区。我更经常地使用--mirror来制作我的工作回购的只读克隆供其他人使用。

这听起来像你可能应该省略--mirror选项。

the git clone man page

--mirror
设置源代码库的镜像。这意味着--bare。与--bare相比,--mirror不仅将源的本地分支映射到目标的本地分支,还映射所有ref(包括远程跟踪分支,注释等),并设置refspec配置,以便所有这些ref被覆盖git远程更新目标存储库中。

要完全清楚,裸露的镜像仓库确实拥有从中克隆的仓库的全部内容,但它没有可以查看这些文件的工作区。如果您从镜像克隆(git clone /path/to/local/mirror_repo.git)中克隆,则会在新的非裸回购中获得工作树。

+0

我没有意识到裸回购没有工作区域。我可能没有足够的亲和力,不能正确理解这部分文档。谢谢。 – cpa 2013-03-07 18:52:40

+0

是的,裸回购是非常接近于正常回购.git目录内的东西。 – MikeSep 2013-03-07 20:13:07