Hexo 蛮久了,但一直都是很傻的在本地生成好了页面后,用 FTP 工具传到虚拟主机的,每次传输都耗时蛮久的(覆盖、跳过文件太多了),于是打算用 Git-FTP 来部署,毕竟 Git 版本管理是很强大的。

安装 git-ftp

在 git bash 执行

$ curl -V
curl  (x86_64-w64-mingw32) libcurl/ OpenSSL/ libssh2/ nghttp2/ librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 HTTPS-proxy Metalink

然后再执行

curl https://raw.githubusercontent.com/git-ftp/git-ftp/master/git-ftp > /bin/git-ftp
chmod  /bin/git-ftp

如果提示 bash: /bin/git-ftp: Permission denied,那么请用管理员权限运行 git bash

安装完之后可以使用 $ git-ftp -h 检测是否安装成功,出现如下图说明安装成功,ctrl+z 关闭。

创建 git 仓库

在你要上传至 FTP 的文件夹目录,使用 git bash 运行 git init,在文件夹中生成一个隐藏的 .git 文件夹,包含了该仓库的一些配置。

配置 git config

在你的仓库下 .git 目录下有个 config 文件,里面需要设置下:

[core]
    bare = false
    repositoryformatversion =
    filemode = false
    symlinks = false
    ignorecase = true
    logallrefupdates = true
[user]
    name = name
    email = name@email.com
[git-ftp]
    url = url
    user = yourusername
    password = yourpassword

如果你只想同步本地目录中的某一个文件夹时,可以这么配置:

git config git-ftp.syncroot ./dowob/assets 目录根据自己结构定。

安装 lftp

因为 git-ftp 的有些命令(git ftp download;git ftp pull)需要用到 lftp,所以需要安装 lftp。

在 git bash 中执行:

chcon install lftp --version 

部署代码到 FTP

1、首先执行 git add . ,将你想要部署的文件提交到暂存区,但此时文件并没有真正进入到版本库当中,文件目前只处于一个中间状态。

2、再执行 git commit,将暂存区文件提交到版本库中。

因为git的分支必须指向一个commit,没有任何commit就没有任何分支,提交第一个 commit 后 git 自动创建 master 分支。(git branch :查看本地分支;git branch -a :查看本地及远程仓库的分支)

3、执行 git ftp init,上传所有提交到远程并创建 .git-ftp.log。

4、以后有修改的话就执行 git ftp push,部署到 FTP 上。


如果此时添加一行文字到welcome.txt

$echo “hello” >> welcome.txt

此时文件发生了改动,如果希望将修改后的文件提交至版本库,必须先git add将修改后的文件存入暂存区,再git commit将文件从暂存区提交至版本库才可以,这和svn有很大的区别,SVN在添加新文之后每次修改的文件直接commit就可以了。

git add .
保存新的添加和修改,但是不包括删除(将文件的修改,文件的新建,添加到暂存区)。会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
git add -u
保存修改和删除,但是不包括新建文件(将文件的修改、文件的删除,添加到暂存区)。仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
git add -a
保存所有的修改(将文件的修改,文件的删除,文件的新建,添加到暂存区)。是上面两个功能的合集(git add --all的缩写)

许多人已经将他们的文件上传到服务器。如果要将上载版本标记为与本地分支相同:
git ftp catchup
此示例省略了以下选项--user, --password和url。请参阅下面的默认值,以了解如何存储您的配置,这样您就不需要重复配置了。
存储上传提交的提交id后,init或catchup然后,您可以上传任何新的提交:
git ftp push
如果您在上一次上传的版本中发现了一个 bug,并且希望返回三次提交:
git checkout HEAD~3
git ftp push
或者有些文件在服务器上发生了更改,您希望在分支之间上载所有更改。master 分支 develop:

git checkout develop         #这是上传的版本。
git ftp push --commit master #上传更改与母版相比。
Last modification:August 12, 2020
如果觉得我的文章对你有用,请随意赞赏