2012-12-03 36 views
1

我开始使用Git和我的项目VCS。 我已创建在/码回购使用哪里是项目文件在远程回购在Git?

git init --bare 

远程回购和从推本地回购变化到那里。那么我想将项目文件从那里移动到/ var/www/project以便http:// ....可访问。但我没有在/ codes-repo上看到任何项目文件(index.php,css /,....)来复制它们,那里只有git文件和文件夹。 他们在哪里?

回答

4

裸仓库没有结帐。也就是说,裸存储库仅保存提交信息 - 它不会在存储库文件夹中保留磁盘上实际文件的副本。

裸仓库只能推或拉。要获得这些文件,最好的方法是克隆裸仓库(作为非纯粹的克隆),然后在克隆中运行结账。

另一种选择,如果你感觉勇敢,是纯仓库转换成非纯仓库(How do I convert a bare git repository into a normal one (in-place)?

+0

我想我得到了我的答案,谢谢。 –

+0

还有用于从数据库中提取对象的git命令。例如。 'git show'。 – bames53

1

纯仓库没有所谓的工作目录,所以不会有任何文件系统对象。

Git仍然跟踪内容,提交,标签等,但将它们存储在某处。当你在非存储库中使用git checkout时,git会更新索引(存储库中的文件)以反映作为参数给出的tree-ish对象。

2

将文件从一个裸仓库的副本,你可以使用git存档

GIT_DIR=~/BARE_REPO git archive --format tar master | tar xvf - 

git的存档命令将转换目标承诺(marter,例如),以tar格式,发送到标准输出。你可以将它管到一个tar命令来立即提取。

另一种方法是检出存储库。

git checkout ~/BARE_REPO myproject 

但是,把这个整个目录放到你的web服务器上是不合适的。否则,您的整个.git目录将被访问。任何人都可以获取源代码并完成提交历史记录(当然,您可以通过.htaccess或nginx设置阻止这些访问)。

+0

裸仓库没有.git目录,这就是为什么它被称为裸仓库# – dunni

+0

已编辑。这是一个错字。只需指向裸仓库目录而不是.git目录。 – miaout17