简介

Git-ftp 是一个使用 git 作为版本控制的 ftp 应用,它可以根据 git 的改动只上传需要更新的文件,来节省流量和时间。

安装

在 Debian 系下,只需要安装:

1
sudo apt install git-ftp

其他版本具体可以在这里找到https://github.com/git-ftp/git-ftp/releases只需要解压运行即可。

使用

添加 Config

可以直接在 git 项目的.git/config 里添加:

1
2
3
4
[git-ftp]
	url = ftp.example.net
	user = ftp-user
	password = secr3t

或者使用 git 命令来添加:

1
2
3
git config git-ftp.url ftp.example.net
git config git-ftp.user ftp-user
git config git-ftp.password secr3t

具体 Config 参数

git config git-ftp.url ftp://ftp.example.net:8010/path ftp 地址

git config git-ftp.user ftp-user ftp 用户名

git config git-ftp.password secr3t ftp 密码

git config git-ftp.syncroot path/dir 本地需要同步的目录

git config git-ftp.remote-root htdocs 远程目录

更多可以查看这里-> manual

同步

初始化同步所有文件

1
git ftp init

其他用法很简单,只需要在 git 内提交文件,然后使用

1
gti ftp push

就可以同步到远程目录了,在 ftp 内会产生一个 .git-ftp.log 的文件用来记录 ftp 内文件的 commit 版本,然后通过于本地 git 比较从而只上传更新的部分。

同步 Hugo

本来博客是使用 Caddy + git + hugo 进行同步,后因为 VPS 只跑这一个程序有点浪费了,正巧百度云的虚拟主机打折一年只要30元,于是搬到到虚拟主机上。

同步的话,按照上面的内容添加好 ftp 后,将 ./public 目录移出 .gitignore 文件里面, git-ftp.syncroot 的路径应该是$PATH_TO_YOUR_HUGO/public,然后使用hugo -E 生成 public 里的文件,提交更改后,使用 git ftp push 就可以同步了。