GIT - 将最新分支复制到另一个目录

时间:2013-08-14 05:29:46

标签: git deployment

我阅读了GIT文档,但无法弄清楚如何将最新版本的代码复制到另一个目录(或部署它)。当然我可以简单地copy -r code /path/to/another/dir,但它会复制由GIT创建的所有其他文件。我不需要那个。那么有没有一种简单的方法可以在没有所有隐藏文件(或原始文件的副本)的情况下复制原始文件?

2 个答案:

答案 0 :(得分:4)

选项1:排除.git子目录

假设您有一个Git仓库的标准设置,您可以复制项目根目录中的所有内容,但不包括.git子目录。

显然你可以这样做with a bash terminal using rsync

rsync -av --exclude='.git' source destination

但我不确定如何使用Windows copy

选项2:git archive export

另一种选择是使用git archive

git archive --format zip --output "output.zip" master -0

将为您提供未压缩的存档(-0是未压缩的标志)。这个问题是你必须从档案中提取文件。

如果您可以使用bash shell或Cygwin等访问Unix工具,也可以在janos's answer中使用这些Unix工具。另请参阅How to do a “git export” (like “svn export”)

#Option 3:使用git ls-files

编辑实际上遇到了这个问题,因为我以错误的顺序将参数传递给cp(文件作为目标目录而不是源代码),所以暂时解决这个问题。

另一种选择是获取Git在工作副本中跟踪的所有文件的列表,然后将它们作为参数传递给复制命令。以下是Unix cp

的示例
git ls-files | xargs cp <destination-root>

答案 1 :(得分:4)

这是一种方法:

mkdir /path/to/target/dir
git archive master | tar x -C /path/to/target/dir

git archive命令通常用于从存储库的内容生成存档文件。它转储到标准输出,您通常会将其重定向到文件。在这里,我们稍微颠覆命令:而不是重定向,我们立即将其解压缩到指定的目录中。必须首先创建目标目录。

也就是说,您似乎希望将其用于部署项目。我个人使用Git本身来部署项目。这样您就可以使用Git命令轻松升级和回滚。当然,.git目录将存在于部署目录中,另一方面,简单副本不会删除在存储库中删除的文件,它们将保留在目标位置。

最后,您可能对我个人最喜欢的人感兴趣:using a post-receive hook to deploy projects remotely

相关问题