我在github上有一个项目,我想在我的服务器上镜像。
我尝试了以下内容:git clone --mirror git@github.com:user/repo.git
。
然后在repo.git
目录中,我有以下文件结构(例如,ls
的输出):
FETCH_HEAD branches/ description info/ packed-refs HEAD config hooks/ objects/ refs/
所以我的问题是:我的文件在哪里??看起来有一堆git相关的东西,但我找不到我写的代码。我错过了一些明显的东西吗?
顺便说一下,git status
返回fatal: This operation must be run in a work tree
,但git branch
会返回分支。怪异。
答案 0 :(得分:10)
当您git clone --mirror
时,它会生成一个裸存储库,因此它不会有工作区。我更频繁地使用--mirror
来制作我的工作回购的只读克隆,供其他人使用。
听起来你可能应该省略--mirror
选项。
--mirror
设置源存储库的镜像。这意味着--bare
。与--bare
相比,--mirror
不仅将源的本地分支映射到目标的本地分支,它还映射所有引用(包括远程跟踪分支,注释等)并设置refspec配置,如所有这些引用都被目标存储库中的git远程更新覆盖。
要完全清楚,裸镜像仓库确实拥有从中克隆的存储库的全部内容,但它没有可以查看这些文件的工作区。如果您从镜像克隆(git clone /path/to/local/mirror_repo.git
)克隆,则可以在新的非裸存储库中获取工作树。