手把手教你用git发布blog

是的社区的 blog 文章很早就改进为基于 .md 的静态发布了, 但是,具体怎么折腾的呢?

由我们的小言现学现卖给大家伙儿 ;-)

背景

如果用过 Wordpress 之类 CMS 系统为基础的 blog 环境,就知道, 一个 blog 网站不是那么简单的,至少包含以下关键性功能:

  • 用户管理
  • 撰写
  • 发布
  • rss
  • cleanurl
  • tag
  • 分类
  • 评注

而这所有的功能,又都要围绕一个数据库来折腾, 所以,传统的 blog 系统,至少要包含:

  • 数据库
  • 应用系统
  • 发布系统

三大部分都要进行分别的安装/配置/测试/运维…

而且,即使 Wordpress 专注开发了10多年, 其在线文章编辑器,依然那么的难以使用…

所以,一切,在 Markdown 出现后终于进化了!

概述

现在 珠海GDG 的官方Blog ,是无网站全静态发布!

  • GitCafe 作为代码托管服务, 替代了以往专用系统的
    • 用户管理
    • 撰写
  • GitCafe Pages 服务,替代了:
    • 发布
    • rss
  • 而隐藏在 pages 服务中的, Jekyll 替代了专用系统的:
    • cleanurl
    • tag
    • 分类
  • Disqus 纯JS 嵌入式评注服务,替代了专用系统的:
    • 评注

即,现在 blog 文章的撰写/修订/发布/管理,只需要:

  • 使用 markdown 格式在本地编辑 .md 文本
  • 通过 git 向 gitcafe 推送编辑结果

其它一切都自动化完成了!

参考:

过程

以下以 小言 多方尝试后的最终成果来罗列

  • 环境: Ubuntu
  • 如果想对应 Windows 环境中的操作,请自行搜索相关文章,或是请小言 哈根达斯 一次,来增补相关内容 ;-)

初始化

在本地建立基于 pages 服务的静态化blog 文章维护环境,是一次的,建立好后, 以后就再也不用折腾的了.

  1. 安装git

sudo apt-get install git

  1. 注册 gitcafe 进入 zhgdg/zhgdg - GitCafe

点击右上角的”派生”, 生成自己专用的社区文章仓库分支.

  1. 初始化本地仓库
# 进入合适的本地目录
$ cd ~/blog
# 克隆自己的文章分支仓库
$ git clone https://gitcafe.com/你的帐号名/zhgdg.git

...

  1. 进入pages 专用分支:

进入目录:

cd zhgdg

# 察阅当前分支
$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/gitcafe-pages
  remotes/origin/master

# 切换pages 分支
$ git checkout gitcafe-pages
Branch gitcafe-pages set up to track remote branch gitcafe-pages from origin.
Switched to a new branch 'gitcafe-pages'

# 检查当前状态
$ git branch -a
* gitcafe-pages
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/gitcafe-pages
  remotes/origin/master
# 也可以用 status 命令
$ git status
On branch gitcafe-pages
Your branch is up-to-date with 'origin/gitcafe-pages'.
...

  1. 配置提交口令

修订本地仓库的配置文件,可以通过 https 协议,自动输入用户/口令,来提交修订

  • 进入本地仓库的 .ssh 目录
  • 用文本编辑器,修订 conf 文件, 修订以下部分
...
[remote "origin"]
    #url = [email protected]:你的帐号名/zhgdg.git
    #将这一行替换为
    url = https://你的帐号:你的口令@gitcafe.com/你的帐号名/zhgdg.git
    fetch = +refs/heads/*:refs/remotes/origin/*
...

SSH 支持

  • 生成公钥 (可选,用以 SSH 无口令提交内容)

ssh-keygen -C "your email" -f ~/.ssh/github

输入以上指令后,会出现一段内容.

其中

...
Your public key has been saved in /home/用户名/.ssh/github.pub
                                        |
                                        +-- 即新公钥所存放的位置

...

查阅公钥:

# 进入目录
$ cd /home/用户名/.ssh/
# 打印公匙
cat github.pub
...

cat之后出现的那一大段字符就是你的SSH公钥了

以便使用 SSH 协议进行加密无口令提交!

这样就不用将真实的用户和口令,暴露在本地配置文本中了

撰写

以下只是文章撰写前后要进行的工作, 而具体文章撰写的要求,参考专门的说明: 珠海GDG 社区文章 撰写指南

  • 进入_posts目录,并查看过往文章
  • 对过往文章,可以进行修订
  • 也可以参照以往文章的格式,创建新文章,分享自个儿的想法/心得/体验

只是注意,每次编辑完要及时:

# 查阅当前仓库状态
$ git status

# 追加新增文件
$ git add .

# 提交文件修订
$ git commit -am "提交注释..."

注:可用”git log”查看提交日志

发布

在不同角色背景下, 文章的发布是有不同管理流程的.

frok-pull request 流程

这是 git 首创的社区协同流程,可以最大限制的接受最广泛的贡献.

但是,涉及 git 的多种操作建议认真参考:

我们的社区文章仓库也一样,和当前 小言 自个儿的私人分支仓库的关系, 决定了,小言的文章想最终发布到官方网站 http://blog.zhgdg.org/

得经过以下步骤:

  1. 礼貌的同步官方仓库,整理好自个儿的提交
  2. 提交整理好的 修订
  3. 发起 pull request
  4. 等候管理员合并 pull request
礼貌整理

简单的说,就是将自个儿多次修订,压平为一次提交,并解决可能的冲突

  1. 追加上游仓库(一次性的)
$ git remote add upstream https://gitcafe.com/zhgdg/zhgdg.git
# 检查状态
$ git remote -v

  1. 获得上游更新
$ git fetch upstream
  1. 尝试合并上游更新
$ git rebase upstream/gitcafe-pages
# 如果有冲突,根据提示完成修订

提交修订

提交合并后的成果 ,是标准的 git 推送操作

$ git push -f

发起PR

进入自个儿的仓库界面,点击右上角的”合并请求”/”pull request”.

进入以下界面后填写相关内容,点击”发送合并请求”

140825-gitcafe.jpg(JPEG 图像,750x423 像素)

完成合并

管理员将在主仓库的 合并请求 列表中看到新的 PR 点击 接受请求 就可以在服务端完成合并,以及 Jekyll 编译和发布了.

主仓库流程

是的,如果小伙伴们长期向社区提交文章的 pull request ,当然的会赢得大妈们的信任, 就可以列为仓库成员,直接对 zhgdg/zhgdg - GitCafe 进行操作了,

嘦在本地重新检出一下 zhgdg/zhgdg - GitCafe 而不用自个儿 分支出来的那个私人仓库, 那么发布文章就一步:

$ git push

所以,坚持贡献,最后总是能获得更多的信任,以及更加快捷的分享渠道 ;-)

总结

整体上:

[一次性]
  + gitcafe reg. 
  |
  + frok zhgdg
  |
  + git clone U-FROK/zhgdg.git
  |   \
  |    +- 修订配置,使用https 协议+明文口令
  |   or
  |    +- ssh-keygen 生成本地密匙对,部署 SSH 公钥在 gitcafe
  |       使用 git 协议,用 SSH 认证,进行无口令提交
  |
  + git checkout gitcafe-pages
  |
[日常的]
    +- git add .          追加新文件
    +- git commit -am ".."提交变更
    |\ (有主仓库权限)
    | +- git push         直接推送修订即可
    |
    |  (没有主仓库权限, 以 pull request 流程发布)
    +- git remote add upstream https://gitcafe.com/zhgdg/zhgdg.git
    |
    +- git fetch upstream
    |
    +- git rebase upstream/gitcafe-pages
    |
    `- git push           推送整理后的修订
    到gitcafe 界面,发起 pull request,等待管理员接受,合并.

教训

在整个儿的探索/尝试过程中, 小言 也有一些的自然 Nive 理解,在此作为FAQ 提供给大家

Changelog

  • 140910 大妈 SriLanka 回来检查作业,重构一次
  • 140825 成功完成第一个 RP 合并,当然不是规范的
  • 140820 提交第一个版本
  • 140812 月例会,倡议每周一篇文章,小言认领了此篇

巡阅

  • 150113 Zoom.Quiet checked
  • 150115 [Jeremy] checked
2014-08-25  

声明: 本文采用 BY-NC-SA 授权。转载请注明转自: #ZHGDG#


以上...


加入 珠海GDG

  1. 注册 Meetup
  2. 关注 Zhuhai GDG
  3. 或扫描: 2meetup

通过 珠海GDG 可以:

    第一时间获知谷歌最新技术,
    可以学到如何去谷歌平台上赚钱的思路和方法,
    可以认识很多有可能将来一起走上自己创业道路的人,
    可以学会把你的创新带向国际市场,
    参加那里的活动有经常和国际上的开发者们进行交流的机会...

PS:

若无意外,题图都是从原文提取或是通过 Google 图片搜索出来的, 版权属左, 不负责任 ;-)

PPS:

珠海GDG 微信/Blog 欢迎投稿,只要追自认内容吻合以下条件:

0. 有趣 ~ 至少是自个儿有兴趣的领域吧...
1. 有料 ~ 至少有点儿原创的东西吧..
2. 有种 ~ 至少不能是成功学吧!

有好物请及时通过邮件列表投稿成也: [email protected]
(发空邮件到 [email protected] 即完成订阅)

微信公号

栏目设定:

    G术图书 (gb:推荐好书,书无中外)
    D码点评 (dd:麻辣评点,善意满盈)
    G说公论 (gt:时评杂文,新旧不拘)
    珠的自白(dm:大妈自述,每周一篇)
    海选文章(hd:得要相信,大妈法眼)

总之, 请大家告诉大家, 珠海生活中的技术社区 都来订阅呗 ;-)

订阅方法

hacker emblem

GDG珠海 社区资源:

大妈的多重宇宙 - YouTube

全新自媒体系列...科学幻想,读书,说故事...

任何问题

随时邮件提问可也:
[email protected]