我开始使用Git和我的项目VCS。 我使用
创建了一个远程仓库git init --bare
在/ codes-repo中并将更改从本地仓库推送到那里。然后我想将项目文件从那里移到/ var / www / project,以便http:// ....但我没有在/ codes-repo看到任何项目文件(index.php,css /,....)来复制它们,那里只有git文件和文件夹。 它们在哪里??
答案 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会更新索引(存储库中的文件)以反映作为参数给出的树形对象。