【问题标题】:where are project files in remote repo in Git?Git远程仓库中的项目文件在哪里?
【发布时间】:2012-11-20 20:29:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: git git-remote git-bare


    【解决方案1】:

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

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

    如果您有勇气,另一种选择是将裸存储库转换为非裸存储库 (How do I convert a bare git repository into a normal one (in-place)?)

    【讨论】:

    • 还有 git 命令用于从数据库中提取对象。例如。 git show.
    【解决方案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 设置阻止这些访问)。

    【讨论】:

    • 裸仓库没有 .git 目录,所以称为裸仓库。#
    • 已编辑。这是一个错字。只需指向裸存储库目录而不是 .git 目录。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      • 2013-09-22
      • 2016-11-12
      相关资源
      最近更新 更多