1

我开始使用 Git 和我的项目 VCS。我创建了一个远程仓库使用

git init --bare 

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

4

3 回答 3

4

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

裸仓库只能被推入或拉出。要获取文件,最好的办法可能是克隆裸存储库(作为非裸克隆),并在克隆处运行结帐。

另一种选择,如果你觉得勇敢的话,是将裸存储库转换为非裸存储库(如何将裸 git 存储库转换为普通存储库(就地)?

于 2012-12-03T11:22:53.157 回答
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 设置阻止这些访问)。

于 2012-12-03T11:28:32.277 回答
1

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

Git 仍然跟踪内容、提交、标签等,但将它们打包存储在某个地方。当您在非裸存储库中执行git checkout时,git 会更新索引(存储库中的文件)以反映作为参数给出的树状对象。

于 2012-12-03T11:26:26.440 回答