0

在我提出问题之前,我想提一下,我今天才开始尝试 git,因此我是一个完全的 git 新手。

我经常为客户在 Wordpress 网站上与平面设计师合作。在我将代码上传到服务器后,图形设计师有时会使用 Wordpress 编辑器(在 Wordpress 管理面板中)直接在服务器上编辑 CSS 和其他文件。

你可以想象这会给我带来问题,因为我必须首先将所有修改后的文件重新下载到我的本地开发文件夹中——因为我不知道哪些文件被编辑了,所以我必须重新下载整个主题文件夹。然后我在本地进行更改,然后重新上传到服务器。

从我在网上阅读的内容来看,Git 似乎可以减轻这种痛苦。

我的问题:如果设计师使用 wp 编辑器更改服务器上的文件而不使用 git / commit,那么使用 Git 仍然对我有帮助吗?它会以类似于 Dropbox 的工作方式自动将所有修改后的文件下载到我的机器上吗?

4

1 回答 1

1

执行 git pull 来移动文件,不会从服务器上的工作目录中收集任何更改。一个潜在的工作流程可能是首先登录到服务器并提交所有更改并将它们推送到裸存储库。然后,您可以从本地裸存储库中提取并查看其他人所做的更改,git 将帮助您将它们合并到本地环境中。

您也可以以相同的方式从本地环境部署到生产环境,方法是推送到裸存储库,然后从裸存储库拉取到生产服务器。

裸仓库似乎是一个额外的步骤,但是您的两个环境(服务器和本地)都是工作环境,因此传输裸仓库将使您在提交和合并时更容易一些。(如果我在这个问题上偏离了轨道,我相信有人会以我的方式指出错误......)

您需要从 repo 中排除 wp-config.php 文件,或根据环境变量等修改权限站点(即在本地和服务器上的 vhost 文件中设置环境变量并使用条件语句确定在 wp-config.php 中使用哪些数据库凭据)。就像是:

switch ($_SERVER['APPLICATION_ENV']) {
case 'local':
    define('DB_NAME', 'local');
    define('DB_USER', 'localuser');
    define('DB_PASSWORD', 'localpwd');
    define('DB_HOST', 'localhost');
    define('WP_HOME','http://local.verycoolwebsite.com');
    define('WP_SITEURL','http://local.verycoolwebsite.com');
    define('WP_DEBUG', true);
    define('SAVEQUERIES', true);
break;

case 'production':
    define('DB_NAME', 'production');
    define('DB_USER', 'www');
    define('DB_PASSWORD', 'foobar');
    define('DB_HOST', 'localhost');
    define('WP_HOME','http://www.verycoolwebsite.com');
    define('WP_SITEURL','http://www.verycoolwebsite.com');
    define('WP_DEBUG', false);
    define('SAVEQUERIES', false);
break;
}

如果图像目录很大并且不需要版本控制,则排除它们也可能是一个好主意。

作为另一种选择,如果您要查找的是移动更改而不是完整版本控制,请查看 rsync 命令。

于 2012-06-19T17:06:58.747 回答