一个本地分支能关联两个远程仓库吗_使用git分支保存hexo博客源码到github
hexo是当前最火的静态博客框架,支持Markdown格式文章编辑并自动生成对应的静态网页,简单高效令人爱不释手。
使用hexo写博客的流程通常是,
- 通过hexo new post_name命令,会自动在source/_post目录下生成一个待写的post_name.md文件
- 编写完该md文件后,用hexo generate编译生成对应的HTML文件
- 发布之前,可以用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相关推荐
- Git如何创建本地分支并推送到远程仓库
Git如何创建本地分支并推送到远程仓库 假设新的分支名称为:new_branch -- 切换到拉取分支的原分支,假设为master git checkout master git pull -- 拉取 ...
- Git关联多个远程仓库
前言:最近遇到了这样一个问题,公司和家里各有一台电脑,下班的时候代码还没写完,但是不想在公司加班,可是代码还报着错,不想提交到公司的远程项目(GitLab)中让领导发现,于是就想在Gitee上建一个私 ...
- Git详解之必知点----Git、本地仓库、远程仓库、IDEA集成Git
Git详解之必知点 1.Git介绍 1.1版本控制(理解) 1.2开发中存在的问题(理解) 1.3SVN版本控制(理解) 1.4Git版本控制(理解) 2.Git下载和安装 2.1Git的安装(应用) ...
- 【Git】IntelliJ IDEA 提交代码到 GitCode 远程仓库 ( GitCode 创建远程仓库 | 将本地工程推送到 GitCode 远程仓库 | 验证权限 | 生成个人访问令牌 )
文章目录 前言 一.GitCode 创建远程仓库 二.将本地工程推送到 GitCode 远程仓库 三.验证权限 前言 GitHub 又挂了 , 国内不太好用 , 现在开始使用 gitcode , 地址 ...
- Git版本管理工具超详细(下载、安装、远程仓库的搭建、git指令)
目录 01_Git概述 02_GIT相关概念(掌握) 03_Git下载与安装 04_Git本地操作-初始化工作区 05_Git本地操作-add与commit 06_Git本地操作-差异比较 07_Gi ...
- 远程仓库与 fetch 命令——Git 学习笔记 20
远程仓库是指托管在因特网或其他网络(比如局域网)中的版本库. 你可以有好几个远程仓库,通常有些仓库对你只读,有些则对你可读可写. 与他人协作涉及管理远程仓库以及根据需要推送或拉取数据. 查看远程仓库 ...
- Git撤销对远程仓库的push 或 Git撤销对远程仓库的commit提交
Git撤销对远程仓库的push 或 Git撤销对远程仓库的commit提交 [一]撤销push 执行 git log 查看日志,获取需要回退的版本号 执行 git reset –-soft <版 ...
- 通过Android studio使用git创建本地分支提交远程仓库以及如何查看切换分支
我们有时候对命令不熟悉的同学例如我,那么这个AS自带的这个创建分支功能就对我们必不可少了. 首先我们看下远程仓库只有主支master,没有任何分支的信息如下图: 1.首先我们打开AS,点击右下角的gi ...
- git 本地重新关联新的远程仓库命令/查看本地关联远程仓库
git remote -v // 查看本地已经关联的远程仓库 git remote rm name // # 删除远程仓库 git remote rename old_name new_name // ...
最新文章
- IJCAI 2021:周志华任大会首个华人程序主席,南大校友获AIJ杰出论文奖
- [cb]NGUI组件基类之 UIWidget
- a*算法的优缺点_轻松理解机器学习算法-朴素贝叶斯
- COLING 2020 | 面向机器阅读理解的双向认知思维网络
- ux设计_声音建议:设计UX声音的快速指南
- WPF 使用 Expression Design 画图导出及使用 Path 画图
- zsh 主题的下载和安装
- table 鼠标移上去改变单元格边框颜色。
- kubernetes 应用快速入门
- Java中的字符串程序
- javascript 面向对象的理解、数据属性的特征,基本数据类型、三大引用类型,方法
- 新晋院士!顶尖985,迎来新校长!
- 国内智能硬件行业 调研报告
- html怎么把图片的图层,PS制作-把图片添加到图层的4种方法
- Java常用jar包用途
- golang实现人民币小写转大写
- 当前应用拦截NFC响应,不弹出选择框教程
- java mocked_java – 使mocked方法返回传递给它的参数
- Excel实战 第1章 数据处理
- 计算机网络,操作系统,微机原理,uml,java都非常重要
热门文章
- BZOJ 3170: [Tjoi 2013]松鼠聚会 切比雪夫距离
- 使用jQuery Treeview插件实现树状结构效果
- Pytorch基础(二)—— Transforms详解
- C#窗体应用程序崩溃解决方法总结
- oracle备份归档文件,oracle 如何不备份已经备份的归档
- ubuntu 64 12.04 oracle,ubuntu server 12.04 x86_64 下安装oracle xe 11 x86_64
- python list遍历定位元素_python for循环,第二遍定位不到元素?
- shiro反序列化工具_Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)源码解析
- java消息顺序执行_Apache Flink:如何并行执行但保持消息顺序?
- python每隔半个小时执行一次_一篇文章教你用Python抓取微博评论