hexo是当前最火的静态博客框架,支持Markdown格式文章编辑并自动生成对应的静态网页,简单高效令人爱不释手。

使用hexo写博客的流程通常是,

  1. 通过hexo new post_name命令,会自动在source/_post目录下生成一个待写的post_name.md文件
  2. 编写完该md文件后,用hexo generate编译生成对应的HTML文件
  3. 发布之前,可以用hexo s本地预览,然后通过hexo deploy发布到远程仓库的master分支,然后你的个人站点就能看到刚才新加的文章了

困扰

然而,使用过hexo搭建个人博客的朋友们想必都会遇到博客源码保存的问题。即远程仓库只会保存hexo发布后的静态HTML文件,你的博客md源文件、主题配置等还在本地,一旦电脑磁盘坏了或者换了电脑,就无法在之前仓库的基础上继续写博客。针对此问题,有不少博主会在github上单独另起一个repository来专门保存博客源文件,每次发布完新文章,需要手动地将source/post下的md文件上传到源文件对应的repository,确实也能解决问题,但总归是麻烦。后来偶然看到聪明的网友借助git分支来巧妙地实现用同一个仓库保存静态网页和博客源码,自己试了下确实很赞,故总结之。

解决办法

新建git分支

因Github Page要求使用master分支作为发布网站的源代码,我们只能用master分支来保存hexo生成的静态网页,对于博客源码,可以新建一个source分支来存储。在github上打开Pages对应的仓库,也就是以"username.github.io"命名的仓库,然后建立一个source分支,如下图:

因为我已经创建过source分支,故下方会显示目前该仓库上有master和source两个分支。其中source分支显示打钩,表示当前仓库的默认分支已经是source而不是master了,下面会讲。

更改仓库的默认分支

github上的仓库初始都会有个master分支,也就是默认分支。对于一个仓库project_name,当我们通过git clone https://github.com/sherlockyb/project_name.git下载代码时,实际拉取的是默认分支master对应的代码。而我们用hexo写博客时,通常是与md源文件打交道,对于deploy生成的master分支代码并不需要我们关注,因此可将仓库的默认分支改为保存源码的source分支,这样通过git clone拉取的就是source分支代码了。

在仓库的主页面,通过Settings -> Branchs,可以看到Default branch的Tab,显示的默认分支是master,可以勾选source,然后update即可将默认分支设置为source,如下图:

将本地hexo目录与远程仓库关联

进入到本地hexo工程目录,也就是我们通常执行hexo new post等命令的目录,执行如下操作:

git remote add origin https://github.com/sherlockyb/sherlockyb.github.io.git

推送博客源码

将本地的md源文件、站点配置文件等推送到source分支。

因为我们只需要保留博客源码,其他无关的文件并不希望推送,需要确保配好了.gitignore文件,通常如下:

.DS_StoreThumbs.dbdb.json*.lognode_modules/public/.deploy*/

然后依次执行如下命令:

git add .git commit -m 'hexo source post'git push origin source

删除public等文件(可选)

因为source分支是从master分支新建的,初始代码实际就是master的拷贝,因而master中已有的public等deploy生成的文件也会一起带过来,这些都不算是博客源文件,如果你也觉着source分支还存着这些有些别扭,就可以先在本地把它删掉,然后执行:

git add .git commit -m 'DEL: public things which only for deploy'git push origin source

执行完之后,你的仓库大概就是长这个样子:

后续即便你再发布博客时,deploy生成public文件,在提交博客源码时,也不会将其带上去,因为有.gitignore将其忽略了。

新环境

假设我们换电脑了,要在新环境继续在原有仓库基础上撸文章,此时通过git clone将博客源码拉到本地,然后安装、初始化hexo就能搞定:

git clone https://github.com/sherlockyb/sherlockyb.github.io.git sherlockybcd sherlockybnpm install hexonpm install hexo-deployer-git -save​// hexo环境配置好后,继续像之前一样hexo new post_name...

注意事项

确保hexo deploy推送的是master分支,hexo目录下的_config.yml文件通常会配置deploy推送的目标地址,这个一般在最初使用hexo时,就会配置为master,不用改动:

# Deployment## Docs: https://hexo.io/docs/deployment.htmldeploy: type: git repo: https://github.com/sherlockyb/sherlockyb.github.io.git branch: master

一个本地分支能关联两个远程仓库吗_使用git分支保存hexo博客源码到github相关推荐

  1. Git如何创建本地分支并推送到远程仓库

    Git如何创建本地分支并推送到远程仓库 假设新的分支名称为:new_branch -- 切换到拉取分支的原分支,假设为master git checkout master git pull -- 拉取 ...

  2. Git关联多个远程仓库

    前言:最近遇到了这样一个问题,公司和家里各有一台电脑,下班的时候代码还没写完,但是不想在公司加班,可是代码还报着错,不想提交到公司的远程项目(GitLab)中让领导发现,于是就想在Gitee上建一个私 ...

  3. Git详解之必知点----Git、本地仓库、远程仓库、IDEA集成Git

    Git详解之必知点 1.Git介绍 1.1版本控制(理解) 1.2开发中存在的问题(理解) 1.3SVN版本控制(理解) 1.4Git版本控制(理解) 2.Git下载和安装 2.1Git的安装(应用) ...

  4. 【Git】IntelliJ IDEA 提交代码到 GitCode 远程仓库 ( GitCode 创建远程仓库 | 将本地工程推送到 GitCode 远程仓库 | 验证权限 | 生成个人访问令牌 )

    文章目录 前言 一.GitCode 创建远程仓库 二.将本地工程推送到 GitCode 远程仓库 三.验证权限 前言 GitHub 又挂了 , 国内不太好用 , 现在开始使用 gitcode , 地址 ...

  5. Git版本管理工具超详细(下载、安装、远程仓库的搭建、git指令)

    目录 01_Git概述 02_GIT相关概念(掌握) 03_Git下载与安装 04_Git本地操作-初始化工作区 05_Git本地操作-add与commit 06_Git本地操作-差异比较 07_Gi ...

  6. 远程仓库与 fetch 命令——Git 学习笔记 20

    远程仓库是指托管在因特网或其他网络(比如局域网)中的版本库. 你可以有好几个远程仓库,通常有些仓库对你只读,有些则对你可读可写. 与他人协作涉及管理远程仓库以及根据需要推送或拉取数据. 查看远程仓库 ...

  7. Git撤销对远程仓库的push 或 Git撤销对远程仓库的commit提交

    Git撤销对远程仓库的push 或 Git撤销对远程仓库的commit提交 [一]撤销push 执行 git log 查看日志,获取需要回退的版本号 执行 git reset –-soft <版 ...

  8. 通过Android studio使用git创建本地分支提交远程仓库以及如何查看切换分支

    我们有时候对命令不熟悉的同学例如我,那么这个AS自带的这个创建分支功能就对我们必不可少了. 首先我们看下远程仓库只有主支master,没有任何分支的信息如下图: 1.首先我们打开AS,点击右下角的gi ...

  9. git 本地重新关联新的远程仓库命令/查看本地关联远程仓库

    git remote -v // 查看本地已经关联的远程仓库 git remote rm name // # 删除远程仓库 git remote rename old_name new_name // ...

最新文章

  1. IJCAI 2021:周志华任大会首个华人程序主席,南大校友获AIJ杰出论文奖
  2. [cb]NGUI组件基类之 UIWidget
  3. a*算法的优缺点_轻松理解机器学习算法-朴素贝叶斯
  4. COLING 2020 | 面向机器阅读理解的双向认知思维网络
  5. ux设计_声音建议:设计UX声音的快速指南
  6. WPF 使用 Expression Design 画图导出及使用 Path 画图
  7. zsh 主题的下载和安装
  8. table 鼠标移上去改变单元格边框颜色。
  9. kubernetes 应用快速入门
  10. Java中的字符串程序
  11. javascript 面向对象的理解、数据属性的特征,基本数据类型、三大引用类型,方法
  12. 新晋院士!顶尖985,迎来新校长!
  13. 国内智能硬件行业 调研报告
  14. html怎么把图片的图层,PS制作-把图片添加到图层的4种方法
  15. Java常用jar包用途
  16. golang实现人民币小写转大写
  17. 当前应用拦截NFC响应,不弹出选择框教程
  18. java mocked_java – 使mocked方法返回传递给它的参数
  19. Excel实战 第1章 数据处理
  20. 计算机网络,操作系统,微机原理,uml,java都非常重要

热门文章

  1. BZOJ 3170: [Tjoi 2013]松鼠聚会 切比雪夫距离
  2. 使用jQuery Treeview插件实现树状结构效果
  3. Pytorch基础(二)—— Transforms详解
  4. C#窗体应用程序崩溃解决方法总结
  5. oracle备份归档文件,oracle 如何不备份已经备份的归档
  6. ubuntu 64 12.04 oracle,ubuntu server 12.04 x86_64 下安装oracle xe 11 x86_64
  7. python list遍历定位元素_python for循环,第二遍定位不到元素?
  8. shiro反序列化工具_Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)源码解析
  9. java消息顺序执行_Apache Flink:如何并行执行但保持消息顺序?
  10. python每隔半个小时执行一次_一篇文章教你用Python抓取微博评论