wordpress - 在 SSH 中使用 Git pull 特定目录

标签 wordpress git ssh

完全是新手问题,但是在将 SSH 与 Git 结合使用时,最佳实践是什么?我正在做一个 WordPress 项目。在根目录中,我有 gulp 和其他开发文件/文件夹,例如我在服务器上不需要的 SASS 和脚本,在同一个项目中,我有我的 WordPress 文件夹,其中包含一个主题和一些自定义插件。正如您可以想象的那样,当主题或任何插件准备好部署时,我不想将我的存储库中的所有内容都 pull 到服务器上。就新手而言,我一直只是 pull 和推送整个存储库,并使用 FTP 将我需要的内容上传到服务器,那么如何使用 SSH 和 Git 完成此操作,是否有更好的设置方法?

编辑:为了让我的问题更清楚一点,让我举例说明我认为我的问题是什么。在我的主项目文件夹中,我的 WordPress 文件夹旁边有一个 SASS 文件夹。我真正需要部署到服务器的是 WordPress 文件夹。我在我的开发机器上进行的构建过程将所有 SASS 文件组合成一个 CSS,然后将其放入 WordPress 文件夹中。我需要 Git 跟踪 SASS 文件夹,这样任何其他开发人员都可以提取它们并继续开发,这样我就不能让 git 忽略它。然而,这些 SASS 文件都不需要在服务器上才能让 WordPress 工作。我只需要部署 WordPress 文件夹及其中的所有内容。

我理解在服务器上创建裸存储库并使用接收后 Hook 将位于 Web 根目录外的 git 文件夹指向 Web 根目录的想法。但这基本上就是 GIT 和 SSH 的工作方式,这并没有解决我的问题。

最佳答案

不适用于 Git

Git 并非设计用于仅 pull 特定文件或目录。它是一个有向无环图,以二进制 blob 作为对象,有时多个对象被压缩成一个更大的对象。

由于 Git 的设计,您的具体要求是不可能的。

备选方案

接收后 Hook

如果您的网站只包含简单的静态文件,那么可以通过 SSH 推送到 git 存储库。实际上,只要您没有非文本文件,您的存储库就不太可能很大。

以下面的设置为例。

  • /var/lib/www - apache web 目录,它是 www.git
  • 的克隆副本
  • /var/lib/www.git - 一个裸 git 存储库。
  • /var/lib/www.git/hooks/post-recieve - 服务器端 git Hook 。它可以是一个 shell 脚本,在更新此存储库时 pull www 存储库。

示例 post-recieve 钩子(Hook)脚本:

#!/bin/bash
cd /home/sam/sandbox/git-hooks/www
unset GIT_DIR
git fetch origin master
git reset --hard origin/master

在 tar.gz 中压缩构建

在构建结束时,您可以将文件压缩到 tar.gz 中。该文件应该托管在某个地方(如果您使用的是 GitHub,则可能是 GitHub 发布版)。一些企业使用 Nexus 或 Artifactory 等本地工件托管。

想法是:您有一个经过测试的工件,它具有特定的 sha256sum。您测试的工件与最终投入生产的工件完全相同。

深入探讨持续集成、持续交付和软件开发生命周期等更多细节可能超出了您的问题范围。

关于wordpress - 在 SSH 中使用 Git pull 特定目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47271880/

相关文章:

WordPress 和 Windows IIS 服务器问题

javascript - 是否可以通过javascript/html/css在JPEG图像的某个地方添加两个电话号码作为链接

git - 是否有适用于 Mac OS X 的良好 git 客户端,它具有 Conerstone 的所有功能或 Subversion 的版本?

java - sshj 使用 nohup 执行脚本

php - 无法使用 SSH 从远程计算机访问 Centos 7 上的 mysql 服务器?

php - WordPress - 仅当 LT IE 9 时才将脚本排入队列

css - 通过 CSS 代码隐藏元素

git - 单个文件的硬重置

git - 使用 git 和 autotools 进行分发

python - 如何在 Paramiko 服务器中实现端口转发?