Git远程仓库中的项目文件在哪里?

时间:2012-12-03 11:19:47

标签: git git-remote git-bare

我开始使用Git和我的项目VCS。 我使用

创建了一个远程仓库
git init --bare 

在/ codes-repo中并将更改从本地仓库推送到那里。然后我想将项目文件从那里移到/ var / www / project,以便http:// ....但我没有在/ codes-repo看到任何项目文件(index.php,css /,....)来复制它们,那里只有git文件和文件夹。 它们在哪里??

3 个答案:

答案 0 :(得分:4)

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

裸仓只能被推送或拉出。要掌握这些文件,最好的办法是克隆裸存储库(作为非裸克隆),然后在克隆中运行结账。

另一个选择,如果你感到勇敢,就是将裸存储库转换为非裸存储库(How do I convert a bare git repository into a normal one (in-place)?

答案 1 :(得分:2)

要从裸存储库复制文件,可以使用git archive

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

git archive命令会将目标提交(例如,marter)转换为tar格式,并发送到标准输出。您可以将其传递给tar命令以立即提取。

另一种方法是结帐存储库。

git checkout ~/BARE_REPO myproject

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

答案 2 :(得分:1)

裸存储库没有所谓的工作目录,因此不会有任何文件系统对象。

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