我们在git中有一个repo,项目包含在名为Project的文件夹中。我们希望能够通过克隆存储库将代码发布到生产服务器,而不包括"项目"文件夹,但下面有一切。这可能吗?目标目录名称是/ var / www,它与项目中的任何内容无关。不幸的是,由于我们的托管服务提供商(我们很快就会改变)的性质,我无法做一个符号链接。
答案 0 :(得分:2)
我的回答假设您有一个git存储库,其内容如下:
/.gitignore
/Project
/Project/index.php
/ProjectB
/ProjectB/pom.xml
如果您的存储库副本中根本不需要历史记录,那么git archive
命令可以执行您想要的操作,除非它在tar
或{{1}中输出其数据格式:
zip
像:
git archive [--format=<fmt>] [--list] [--prefix=<prefix>/] [<extra>]
[-o <file> | --output=<file>] [--worktree-attributes]
[--remote=<repo> [--exec=<git-upload-archive>]] <tree-ish>
[<path>…]
但是,git clone命令不接受存储库路径,我认为仅仅导出某个分支的树视图并不是很好。您可能需要一个子模块使Project成为一个独立的git存储库,或者像git archive --format=zip --remote=git@foobar.git master -- Project | unzip
示例一样,只获得您想要的但没有版本控制(在生产服务器上可能有问题)。
相反,你可以这样做:
git archive
。/opt/foobar
中创建/opt/foobar/Project
的符号链接。或者在您的apache配置中引用/var/www
(以避免使用符号链接)而不是简单/opt/foobar/Project
。