摘要:Hexo 本地库由于经常需要改动,无论是主题中 css 样式的修改,还是文章的增删,如果有了 Git 版本控制的加持,管理起来都会更加容易。

文件夹目录dir -name

node_modules
public
scaffolds
snap
source
themes
.gitignore
db.json
nblog.ps1
package-lock.json
package.json
pull.ps1
_config.v.yml
_config.yml

建立库

创建库

cd D:/blog #进入目录
git init #将此目录转换成 git,添加了隐藏的目录 .git

由于 Hexo 本地库文件夹中有大量无需改动的文件,因此考虑将他们忽略。将这些文件添加入💾.gitignore 文件中,git 就不会监控他们的改动,使用git clean命令也不会将他们删除

notepad++ .gitignore
>>.gitignore
	/node_modules # hexo 本体和插件所在地,hexo init 生成
	/themes/landscape # 默认主题
	/db.json # 不明
	/Public # 生成文件,通过 hexo g 得到
	/desktop.ini # windows 文件

/斜杠开头表示不递归匹配。完成后,使用git status -s可以看到纳入管理的所有文件

然后进行第一次提交:

git add .
git commit -m “first commit”

文件的增删和提交

新建博客使用脚本notepad++ New-Blog.ps1,文件名通过计算📁post 文件夹内文档数目得出,新建后打开等待编辑。脚本如下:

$count = [System.IO.Directory]::GetFiles("D:\Blog\source\_posts").Count # 计算文件数目设为变量 $ Count
# cp D:\blog\scaffolds\demo.md D:\blog\source\_posts\$count.md # 这是新建文件的另一种方案,直接复制,但是无法自动填写 Font-matter 的时间
cd D:\blog # 进入该目录,以防从其他地方调用此脚本的工作路径问题
hexo n $count # hexo 默认新建的方案
start "D:\Blog\source\_posts\$count.md" # 启动
exit

编辑完成后,新建脚本提交notepad++ Pull-Blog.ps1

$count = [System.IO.Directory]::GetFiles("D:\Blog\source\_posts").Count #数目
$date = Get-Date -Format 'yyyy-M-d H:m' #系统时间

cd D:/Blog #设置工作路径,防止从其他地方调用的 hexo 和 git 命令无效的情况

hexo clean # 清理
hexo g --silent # 生成,--silent 表示不输出

if (test-path D:\Blog\public\index.html){ # 判定 public 中是否有文件,防止未生成的情况
	if (Test-Path D:\Blog\public -NewerThan $date){ # 判定 public 是否为刚刚生成,防止提交旧目录
		Write-output "Generate Success" # 如果两个条件都符合,进行提交
		git add .
		git commit -m "$count $date" # 需要提交说明有改动,这两步可以简化为 -am
		cd D:/blog/public #提交到云,如果是 github pages 可以 git push
		# tcb login --apiKeyId {keyid} --apiKey {key}
		tcb hosting deploy ./ -e {endiv}
	}
	else {
		Write-output "There is no newer file to pull" # 旧目录的情况
	}
}
else {
	echo "No Public Folder" # 无生成文件的情况
}
Write-output "Press any key to exit" # 上传文件,等待用户确认
$null = [Console]::ReadKey('?')
exit

文件版本的回溯

设若我修改了💾New-Blog.ps1 并做了提交,但发现改错了,又重新改了一次,将这两次修改并为一次,使用git commit --amend命令。它将本次暂存区的修改和上次的修改一起合并提交,覆盖上次的提交:

git commit -m "Modify New-Blog.ps1" # 上次的提交
notepad++ New-Blog.ps1
git add New-Blog.ps1
git commit --amend 

设若我在一次提交之后,修改了💾Pull-Blog.ps1,现需要将它还原成提交之后的原状态,使用git restore命令:

git restore Pull-Blog.ps1

设若我修改了💾source/_posts/54.md,进行三次提交之后,发现需要改回该文件的原版本,使用git reset命令:

git log -5 --oneline # 查看五次的的提交历史
>> Output <<
	6caefd2 (HEAD -> master) use hexo n to generate new file
	cc68f0b 75 2020-12-18 12:44
	505fe05 74 2020-12-17 17:6 # 于这个版本我提交了对 54.md 的修改
	4e7d5ec 74 2020-12-17 3:37
	64571b9 74 2020-12-16 21:3
>> Output << 
git diff 505fe05 4e7d5ec source/_posts/54.md # 这样可以看到到底改了什么
git reset 4e7d5ec source/_posts/54.md # 将这个修改变为为暂存状态,此时可以使用 restore 命令
## 或者
git reset 4e7d5ec source/_posts/54.md --hard # 修改状态并且保存文件