基于Gitee Pages和hexo的建站流程
首先要有一个gitee账号和一个仓库,建完仓库需要申请gitee pages的服务,申请之后,会显示在两个工作日内审核,但实际上两天过去还是审核中,我还打了电话客服说帮我催一下,然后第四天晚上才通过。而且据我所知原来gitee是允许私密仓库申请gitee pages服务的,但是现在只能开源仓库申请这个仓库了。
环境配置
首先你需要安装node.js和git,这两个我原来已经安装过了。
然后我们在本地新建一个文件夹,我的取名为Blog
然后再这个文件夹的根目录下,右键,选择git bash here,但是这样后来我遇到没有写入权限的错误,因此我选择另外一种方式:以管理员权限运行git bash软件,然后切换到这个文件夹下。
Hexo的安装与基本命令
什么是hexo?
Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他标记语言)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
其主要信息和安装命令、主题等都可以从其官网轻松得到:https://hexo.io/zh-cn/
为了安装Hexo,只需要在Blog目录中单击右键启动Git Bash Here,然后输入命令:
npm install hexo-cli -g
然后等待几分钟(取决于你的网速),完成后需要首先进行初始化在本地生成Hexo相关目录:
hexo init
这几部安装的命令我真的花了好久,心态完全崩了,尝试了无数次,全部是网络问题,卡的要死。
最后把clash改为全局模式才解决了
主题下载与安装
Hexo官网上提供了丰富的主题可选,你只需要打开对应的界面(https://hexo.io/themes/)选择喜欢的,然后点击名称跳转到GitHub仓库选择下载或者克隆对应的zip文件到本地,并且解压到网站目录下的themes目录即可。
这里我暂且选择这个主题。
点进去你可以找到这个主题的github链接:https://github.com/EvanNotFound/hexo-theme-redefine
然后这个是这个主题的官网:https://redefine-docs.ohevan.com/
这个是主题的官网文档:https://redefine-docs.ohevan.com/getting-started
官方文档提供了两种安装方式,第一种使用npm安装,反正这种方式我总是出问题,于是我试了一下git安装,也是出问题。
于是我最终选择直接下载github上的zip文件,但是解压到哪个文件夹呢?我注意到第二种git安装命令实际上已经指明了路径。官网文档这里实际上有点混淆我了,上面说是再hexo根目录下安装,但实际上是安装在Blog/themes文件夹下。
网站配置文件修改
这几步跟着官方文档来没问题
启动服务器
依据网页文本与新的CSS样式生成新网站文件
hexo generate(or g)
启动本地服务器,可以在localhost:4000查看网站修改效果
hexo server(or s)
成功访问:
部署到gitee
尝试将博客目录与远程私有库关联,但是执行两个命令均报错not a git repository
于是执行这个命令
再次执行,应该是成功了
然后三板斧
但是执行到第三步时出现了问题
参考这篇博客:
原文链接:https://blog.csdn.net/weixin_40922744/article/details/107576748
事实上我是属于第一种
这里会让你输入一些东西,不用输直接三个回车就行,然后可以看到生成了一个公钥一个私钥文件,pub后缀的那个就是公钥
然后打开文件,直接全部复制即可。然后来到gitee管理界面,添加公钥
再次执行命令(换着法子执行了好几次都是同样的报错)
参考这篇文章:
分析问题:
因为技术的发展和经验的积累,现在的git的功能也越来越完善,它不仅提示出错(具体原因),还会给出一些建设性意见,以供你参考。
我们知道git的一大好处就是可以团队合作开发,但是这就涉及到一个问题,怎么保证远程仓库的一致性?这也是它不得不处理的一个重要问题!
我们可以这样理解这个问题就是:别人上传到远程仓库后,你没有及时的同步(、拉取)到本地,但是你同时又添加了一些内容(提交),以致于你在提交时,它会检测到你之前从远程仓库拉取的时候的仓库状态和现在的不一样。于是,它为了安全起见拒绝了你的提交(然后就报了这个错误)。
再者我们可以简单来理解这个问题:我们从字面上理解“non-fast-forward”,可以认为是“不能快速前进”,我觉得有个广告说得好:车到山前必有路……但是路有好走的路,也有不好走的路;而遇到不好走的路时(比如前方遇到拦路石,或者是前方出现岔路),我们就不得不停下来思考“以后的路该怎么走”了,我们“不仅要低头赶路,也要抬头看路”就是这个意思。
“不能快速前进”的原因是因为路不一样了,变得不好走了;体现在git里面就是提交历史出现分叉,主线不再是一条直线,而是在前端出现了分叉,git不知道该如何前进,所以报错了,让你来觉得走哪条路!
3、解决问题
于是你有2个选择方式:
3.1、先合并之前的历史,再进行提交——提倡使用
(1)先把git的东西fetch到你本地然后merge后再push
$ git fetch origin master
$ git merge origin FETCH_HEAD
先抓取远程仓库的更新到本地,然后与你的本地仓库合并,(如果有冲突就要解决冲突后再合并,冲突问题比较复杂,这里就不详细说了),这样就可以使远程仓库和你本地仓库一致了,然后就可以提交修改了。
(2)这2句命令等价于
$ git pull origin master
但是使用git fetch + git merge 更加安全。
(3)git pull --rebase origin master
重定基,可以是历史更加统一,即使提交历史趋向于一条直线。
补充:他们之间的关系
git pull = git fetch + git merge FETCH_HEAD
git pull --rebase = git fetch + git rebase FETCH_HEAD
3.2、丢弃之前的历史,强推——谨慎使用
强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容
$git push -f 或者$ git push --force
官方文档提示:This flag disables these checks, and can cause the remote repository to lose commits; use it with care.(即:此标志禁用这些检查,并可能导致远程存储库丢失提交;小心使用。)
俗话说得好:“强扭的瓜不甜”,强制(暴力)执行总会产生一些不好的结果,应慎重考虑是否使用该命令!!!
不仅在此处,在平时使用时,也要非常注意,除非你真的是想覆盖远程仓库(你真的知道自己在干嘛!),不然最好不要强制执行。
原文链接:https://blog.csdn.net/weixin_46900256/article/details/130552794
于是我选择强制覆盖执行,因为原本仓库里就只有几个readme文件
最后终于成功了
这时候不要忘了重新部署一下gitee pages
然后访问网站看看https://l011apa100za.gitee.io/
大功告成!