需求

将git的最新代码部署到ftp服务器上。而且不能每次全部覆盖,而只上传有改动的部分。典型场景是个人站点使用的是虚拟主机,只支持FTP,但站点的部分文件是在本地Git或Github上托管的。每次更新完文件后希望可以自动将更新的文件上传虚拟主机。

方案

万能的Github上有现成的工具:git-ftp

开工

1-安装git-ftp

本文以树莓派的debian系统为例,其他系统的安装方法请移步官方说明

sudo apt-get install git-ftp

2-进入git目录配置ftp信息(配置是每个git项目分开的)

cd /www/wwwroot/blog.mangolovecarrot.net/usr/plugins/HandsomeHelper
git config git-ftp.url "ftp://ftpsite:21/wwwroot/usr/plugins/HandsomeHelper"
git config git-ftp.user "ftpusr"
git config git-ftp.password "ftppass"

3-首次上传以便记住当前状态

即使FTP上已经存在也没事会用最新的覆盖的。

git ftp init

会看到目录下的文件(会自动包含所有子目录)被索引并全部上传到ftp指定目录下了。

4 files to sync:
[1 of 4] Buffered for upload '.gitignore'.
[2 of 4] Buffered for upload 'LICENSE'.
[3 of 4] Buffered for upload 'Plugin.php'.
[4 of 4] Buffered for upload 'README.md'.
Uploading ...
Last deployment changed from  to 264623c848804c4365173ba20bd5eef0123a9c64.

如果文件很多不想全部上传一次而且ftp上已经存在的话,可以用另一个命令

git ftp catchup

以后只要想上传最新改动(commit)过的文件就执行一下这个命令就完事了

git ftp push

你还可以结合Git的hook功能,每次git push后自动执行这个命令,具体请参见这篇文章。

Last modification:May 9, 2021
If you think my article is useful to you, please feel free to appreciate