「Termux」使用 Android 设备同步更新 hexo 源码

原创

本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。

(小白向保姆级详细教程)

告别电脑,冬天就该躲在被窝里shuǐ博客。

如果还需迁移到其它设备,操作大同小异。

前处理

一键美化脚本

sh -c "$(curl -fsSL https://gitee.com/idkzr/termux-ohmyzsh/raw/master/install.sh)"
重启 termux 后输入 zsht 调整配色,建议选用 2. flat.colors ,观感最好。

更换为清华源
sed -i 's@^\(deb.*stable main\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable main@' $PREFIX/etc/apt/sources.list
sed -i 's@^\(deb.*games stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games stable@' $PREFIX/etc/apt/sources.list.d/game.list
sed -i 's@^\(deb.*science stable\)$@#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science stable@' $PREFIX/etc/apt/sources.list.d/science.list

pkg update
安装必备组件

pkg install vim curl wget git unzip unrar nodejs-lts openssh -y && npm install hexo-cli -g

同步至本地

git init
设置全局默认用户和邮箱
git config --global user.name 用户名
git config --global user.email 邮箱

将远程仓库克隆至本地
git clone https://github.com/用户名/仓库名.git
非公开仓库需按照提示输入账号密码

进入博客目录
cd loafing.cn
安装依赖
npm install
慢慢等🍃…
我这里东西有点多,特别慢( added 961 packages from 852 contributors in 347.876s )

查看版本
node -v&&git version

hexo clean&&hexo g&&hexo s

本地预览
浏览器打开 http://127.0.0.1:4000 ,一切正常 🎉

强烈建议使用终端进行编辑 ⚠⚠⚠

由于 Termux 不完善或者 Android 10 的 system 分区权限问题,hexo s 运行时如果博客文件变动,可能报错 permission denied 导致无法实时预览本地效果,暂时不知如何解决,实际并不影响下次 hexo g 。挂载到外部目录似乎能解决?暂未研究。
hexo s 运行时,如果使用 mt 管理器等外部工具进行当前博客源码修改,很容易触发以下报错:

ERROR {
err: [Error: EACCES: permission denied, open '/data/data/com.termux/files/home/loafing.cn/source/_posts/adb-notes.md'] {
errno: -13,
code: 'EACCES',
syscall: 'open',
path: '/data/data/com.termux/files/home/loafing.cn/source/_posts/adb-notes.md'
}
} Process failed: %s _posts/adb-notes.md

多次崩溃后找到规律:
编辑完成后需要退出编辑界面,再去浏览器刷新页面,报错的概率就小很多。(但依然闹心)
修改文件属性-权限依旧不能解决……
提交 Issue 后,得到 Termux 维护者 @xeffyr建议牢骚

“NEVER edit files in Termux home as root anymore, at least if you are not aware of how file permissions work on Android.
……
All work should be done in Termux home directory.”

更新至云端

为当前博客目录配置用户和邮箱(没加下面两条去掉 --global 的命令时后续操作似乎有问题)
git config user.name 用户名
git config user.email 邮箱

添加远程地址
git remote add origin git@github.com:用户名/仓库名.git

查看工作去与暂存区的差异(项目的改变)
git status

将想要上传的文件目录从工作区添加到暂存区
这里直接添加全部
git add .

将暂存区的文件提交至本地库并添加注释
git commit -m " 更新博客源码 - 手机 "

将本地库的项目上传至远程库
git push origin master

可能出现报错

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'github.com:用户名/仓库名.git'

解决方案

git pull --rebase origin master
git push origin master

浏览器刷新 GitHub 仓库,查看方才上传的文件是否有误。

ssh 验证

如果不想每次传输都费力输入账号密码,建议 使用 ssh 进行验证,一劳永逸。
今后若使用其它设备同步博客源码,可直接将 .ssh 文件夹转移过去,无需重新生成公钥、私钥。

日常更新

本地→云端
git status
git add .&&git commit -m "博客源码更新-📣(手机)"&&git push origin master

云端→本地
git fetch origin master&&git merge origin/master

如果不确定哪边的内容最新
git log origin/master
查看最近提交记录

  • 为区分不同设备的上传记录,建议合理使用
    git commit -m " 注释 "

相关文章

本文作者:冼仙

本文链接: https://loafing.cn/posts/hexo-Android-Termux.html

文章默认采用 CC BY-NC-SA 4.0 许可协议,如有转载请注意遵循。

评论

您所在的地区可能无法访问 Disqus 评论系统,请切换网络环境再尝试。