前言

之前在家里搭建了博客,成功部署到github上,并将hexo目录也上传至github/hexo仓库保存。
后来到公司想把它们down下来,方便两边修改同步。

第一个坑:hexo发布博客到github

同样进行了一系列的node安装,hexo安装等,并且在hexo博客目录下down下了guthub/hexo的资源,本地启动,没问题。
但是当我发布想发布到yourname.github.io上时,问题来了,它居然把我的整个hexo博客目录扔到了yourname.github.io上,不是说好的只发布.deploy_git下的内容呢!!

于是我就茫然了啊,我去查看hexo下的_config.yml文件,

1
2
3
4
deploy:
type: git
repo: git@github.com:yourname/yourname.github.io.git
branch: master

没错啊,是这个地址啊。

后来一想也不对,就算这里错了也不对,不是目标地址错了,而是发布的内容错了。

网上查到了这篇博客: hexo部署到github遇到的坑,最后说删除hexo目录下的.git文件,然后我就试了试,重新发布,然后又报错了。。这里想截图可是命令行找不到了,大概就是说没有指定repository,然后我点开.deploy_git文件夹,突然想到在家里.deploy_git文件夹下面是有.git的,而且还是我自己指定的。

哈哈,瞬间好像知道了,打开git bash,切换到hexo/.deploy_git,执行

1
git init

再绑定远程仓库

1
git remote add origin git@github.com:yourname/yourname.github.io.git

回到cmd命令行

1
hexo d

搞定了,成功提交了正确的博客内容。

第二个坑:hexo目录与github/hexo同步

然后再把我的hexo目录和github/hexo同步,刚才把hexo目录下的.git删了。好吧,重新建回来。
git bash切换到hexo根目录

1
2
3
git init

git remote add origin git@github.com:yourname/hexo.git

执行pull指令

1
2
3
4
5
6
7
8
9
10
11
12
$ git pull origin master
From github.com:yourname/hexo
* branch master -> FETCH_HEAD
error: The following untracked working tree files would be overwritten by merge:
.npmignore
_config.yml
db.json
node_modules/.bin/JSONStream
node_modules/.bin/JSONStream.cmd
node_modules/.bin/acorn
node_modules/.bin/acorn.cmd
...

这里说一下,第一个坑中hexo目录下的内容是我直接从github/hexo上down下来复制过来的,然后本地又进行过hexo生成和发布操作,错误具体原因不太清除(知道的童鞋欢迎指正),网上查到解决办法是先清理

1
2
3
4
5
6
7
8
9
10
11
$ git clean -f -d
Skipping repository .deploy_git/
Removing .npmignore
Removing _config.yml
Removing db.json
Removing node_modules/
Removing package.json
Removing public/
Removing scaffolds/
Removing source/
Removing themes/

清理后hexo目录下只剩.deploy_git和.git目录,再拉取就可以了

1
2
3
4
$ git pull origin master
From github.com:yourname/hexo
* branch master -> FETCH_HEAD
Checking out files: 100% (7651/7651), done.

所以下次可以先同步好hexo文件夹,这样第二个坑应该就不会出现了。

参考链接:https://www.cnblogs.com/tenny-peng/p/11543279.html