2014-09-02 53 views
2

我们在git中有一个仓库,其中项目包含在名为Project的文件夹中。我们希望能够通过克隆repo来将代码发布到生产服务器,而不包括“Project”文件夹,但是包含它下面的所有内容。这可能吗?目标目录名称是/ var/www,它与项目中的任何内容无关。不幸的是,由于我们托管服务提供商的性质,我们不能只做一个符号链接(我们很快就会改变)。没有包含顶级/父级文件夹的Git克隆

+0

只是尝试'git clone Project/var/www'' – 2014-09-02 21:31:41

+0

我不想在克隆过程中包含Project文件夹。而不是/var/www/Project/index.html我宁愿将/var/www/index.html – StackOverflowed 2014-09-02 21:34:33

+0

cd放到你的Project文件夹中,运行'git init','git add .','git commit -a'和然后将其克隆到您的生产服务器。这会实现你想要的吗? – genisage 2014-09-02 21:51:17

回答

2

我的回答需要你有一个Git仓库,其内容的假设如下:

/.gitignore 
/Project 
/Project/index.php 
/ProjectB 
/ProjectB/pom.xml 

如果你不需要的历史都在你的仓库的副本,还有就是git archive命令,可以做你想做的,除了其输出将其数据tarzip格式:

git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>] 
       [-o <file> | --output=<file>] [--worktree-attributes] 
       [--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish> 
       [<path>…] 

像:

git archive --format=zip [email protected] master -- Project | unzip 

但是,git clone命令不接受存储库路径,我认为它不是真的只想导出某个分支的树视图。您可能需要一个使项目成为独立git存储库的子模块,或者像git archive示例一样,仅获得您想要的但没有版本控制(在生产服务器上可能存在问题)。

相反,你可以这样做:

  • 克隆你的仓库到任何路径,说/opt/foobar
  • /var/www中创建/opt/foobar/Project的符号链接。

或在您的apache配置(避免符号链接)而不是简单的/var/www中引用/opt/foobar/Project