Hexo部署github遇到的坑

问题

最近在玩Hexo的时候发现,使用 Hexo d 部署到github上的时候,用户名变成了公司的git账号,再去查我其他仓库的git提交,居然发现也都是我公司的账号!瞬间炸裂,我之前commit的contributions都没了QAQ

思考

造成这个问题的原因应该在git config的设置上,查阅了相关的资料,我发现问题出在git的global选项上。

如果你只有一个git账号的话,那么

1
2
git config --global user.name "yourname"
git config --global user.email "you@emali.com"

这样设置是理所当然的,但如果我是多账户(个人一个,公司一个)那就会出现问题:当你没有局部设置的用户名,那么就会按照你的全局设置提交。

所以这个时候需要你单独设置:

1
2
3
4
5
6
7
8
# 这样局部设置好的用户名和邮箱,会把全局的设置覆盖
git config user.name "yourname"
git config user.email "you@emali.com"
# 输入以下指令可以查看git的name
git config name
# 输入以下指令可以查看git的所有配置
git config --list

那么当我如此设置好了之后,发现部署后依然是公司的账户。。。

后来先去翻查hexo的deploy模块,没有问题,静下心思考,发现盲点在于:与github同步的目录并不是hexo的根目录。

hexo的部署并不是部署自己的根目录,而是部署根目录下的.deploy_git/ 文件夹中,所以git config 不应该在hexo的根目录设置局部的用户名和邮箱,而是应该去.deploy_git/ 文件下设置。

解决

进入.deploy_git/ 文件夹,发现git config果然没有修改过,赶紧添加用户名和账户:

1
2
git config user.name "yourname"
git config user.email "you@emali.com"

push成功!

总结

在多用户git账号的情况下,似乎并没有很好的解决办法,只有通过设置局部用户名和邮箱才行。所以在实际使用中,还是应该将常用的用户名和邮箱设置为全局global,其他账号的项目则局部设置。