仅从git标记复制文件

仅从git标记复制文件,git,Git,我在git存储库中有一些php代码。我在同一web服务器上的多个vhost中使用该代码,但是不同的vhost可能使用不同版本的代码 如何从各种vhost httpdocs目录中的特定标记创建文件副本,而不必为每个目录复制.git目录 我意识到我可以为每个vhost使用git克隆/git签出标记,只需删除.git目录,或者使用git归档然后解压文件,但我假设/希望有一种“正确的”git方法来实现这一点。。。类似于git archive,但文件直接复制到所需位置。(如您所述)是为给定标记提取子目录的

我在git存储库中有一些php代码。我在同一web服务器上的多个vhost中使用该代码,但是不同的vhost可能使用不同版本的代码

如何从各种vhost httpdocs目录中的特定标记创建文件副本,而不必为每个目录复制.git目录

我意识到我可以为每个vhost使用git克隆/git签出标记,只需删除.git目录,或者使用git归档然后解压文件,但我假设/希望有一种“正确的”git方法来实现这一点。。。类似于git archive,但文件直接复制到所需位置。

(如您所述)是为给定标记提取子目录的正确命令

git archive [-o | --output=<file>] <tree-ish> [<path>…]
(如您所述)是为给定标记提取子目录的正确命令

git archive [-o | --output=<file>] <tree-ish> [<path>…]

正确的方法是复制回购协议。为什么要阻止这种情况发生?有两个原因。(1)在服务器上设置multile.git目录似乎是不必要的(而且最终会浪费空间),尤其是在副本永远不会更新的情况下。(2) 我不想让web访问.git目录。我意识到我可以用.htaccess等来解决这个问题,但最安全的方法是根本不用它们。在Unix或Linux系统上,Git在制作本地克隆时会创建硬链接,因此您不会复制所有.Git目录内容。正确的方法是克隆repo。为什么要阻止这种情况发生?有两个原因。(1)在服务器上设置multile.git目录似乎是不必要的(而且最终会浪费空间),尤其是在副本永远不会更新的情况下。(2) 我不想让web访问.git目录。我意识到我可以用.htaccess等工具来解决这个问题,但最安全的方法是根本不用它们。在Unix或Linux系统上,Git在制作本地克隆时会创建硬链接,所以你不会复制所有的.git目录内容。这可以通过一个命令来完成:
git archive--format=tar…| tar-C/path/to/target-xf-
@Bombe:谢谢你的这个命令,我已经把它包含在答案中了。谢谢。我想会有更直接的方法来做这件事。。。压缩然后解压文件只是为了复制它们似乎相当复杂!虽然很容易实现,但如果这是最好的方法,那么应该可以很好地工作。@rowatt Tar不压缩,它只存档。这里的开销很少;tar实际上是一种流行的在机器之间以非常相似的方式复制文件的方法。。。我太习惯用焦油压缩(如焦油-z等),我忽略了这一点!这可以在一个命令中完成:
git archive--format=tar…| tar-C/path/to/target-xf-
@Bombe:谢谢你的这个命令,我已经把它包含在答案中了。谢谢。我想会有更直接的方法来做这件事。。。压缩然后解压文件只是为了复制它们似乎相当复杂!虽然很容易实现,但如果这是最好的方法,那么应该可以很好地工作。@rowatt Tar不压缩,它只存档。这里的开销很少;tar实际上是一种流行的在机器之间以非常相似的方式复制文件的方法。。。我太习惯用焦油压缩(如焦油-z等),我忽略了这一点!