1 初学github
github是目前最具声望,最高效的版本控制系统。如果你还不太熟悉github,建议你看看,当然也可以去看github的官方文档,我几乎就是翻译了一下。
1.1 安装配置git
sudo apt-get isntall git
git config --global user.name "Xiaoxin2009"
git config --global user.email "buptlixin@163.com"
1.2 Create A Repository
进入自己的github主页,点击Create new repository,给repository 取名叫Hello-World。然后点击下面的Create repository.
1.3 开始备份
Step 1 进入本地需要备份的目录。
cd /home/bupt/Hello-World
Step 2 git init
对当前目录下的文件进行版本控制。
git init
Initialized existing Git repository in /home/bupt/Hello-World/.git/
Step 3 git add
将需要备份的文件加入到备份列表中,有这样几种用法:
git add README (只添加当前目录下的一个文件)
git add .(添加当前目录下的所有文件)
git add *.txt (添加当前目录下的 .txt文件)
Step 4 git commit
标注一个附带消息备份的检查点.
git commit -m 'first commit'
or
git commit -am 'commit'
Step 5 Push your commit
git remote add origin http://github.com/Xiaoxin2009/Hello-World.git
上面的命令就会增加URL地址为'http://github.com/Xiaoxin2009/Hello-World.git',名称为origin的远程服务器,以后提交代码的时候只需要使用 origin别名即可.
git pull origin master
git push origin master
git pull这一步可能会遇到Merge Conflict的问题,stackoverflow上给出的解决方法是最方便的解决方法是:
meld is a useful three-way-compare merge tool. you can use it in Git.
sudo apt-get install meld; (install meld)
git config --global merge.tool meld; (set Git merge tool default as meld)
Usage
When you merge a branch in Git, it may get into conflict state, if you need to go on, you need fix these conflict, but if you need to go back to the state before merge, you can you use
git reset --hard; (get me back)
If you want to fix the conflicts, use
git mergetool;
1.4 查看所有版本的备份:
git log
1.5 下载远程文件
git clone http://github.com/Xiaoxin2009/Hello-World.git
下载下来的项目会保存在当前目录下。
2 开始搭建博客
废话不多说了,我会尽量用最少的语言来把过程说清楚,如果有不太熟悉的名词就自己谷歌吧。
2.1 pelican&markdown
pip install pelican
pip install markdown
2.2 在github上创建博客项目
登录到你的github
主页上去,用上面介绍的方法创建一个username.github.io
的项目,这个名字的项目每个github
用户只能创建一个,它是github
为你分配的二级域名。你就是用它来维护自己的 github pages
的。
2.3 创建博客目录
mkdir myblog
cd myblog
pelican-quickstart
会提示你回答一系列问题,其中
Do you want to generate a makefile/fabfile to automate generation and publishing? Do you want an auto-reload &simpleHTTP script to assist with theme and site development?
这连个问题回答yes,其余全部回答no。当然你回答的问题最后也会保存到pelicanconf.py里,到时候想改的话也可以。 回答完成之后myblog文件夹下应该有如下路径:
myblog/
├── content # 存放输入的源文件
│ └── (pages) # 存放手工创建的静态页面
├── output # 生成的输出文件
├── develop_server.sh # 方便开启测试服务器
├── Makefile # 方便管理博客的Makefile
├── pelicanconf.py # 主配置文件
└── publishconf.py # 主发布文件,可删除
进入进入output把自己刚刚建好的username.github.io版本库clone下来:
cd output
git clone http://username/username.github.io.git
3 写博客
用markdown语法写一篇博客,保存成.md文件放到 content/文件夹下。 回到myblog文件夹:
make publish
make serve
这时pelican会将你写好的.md文件转化成html,可以在output/目录下看到,你也可以打开浏览器,输入http://localhost:8000/
就可以看到你网页版的博客了。
我推荐你使用StackEdit作为你写博客的编辑器,真是又方便又好用,支持markdown语法,而且可以预览,同时还跟操作系统,浏览器无关,随时随地都可以编辑。我同样推荐你使用七牛作为你维护博客图片的空间,它是一个云盘软件,很方便,还有一些好玩的API可以玩。
我是用 StackEdit+七牛+Dropbox来写博客的,你也可以参考一下。
4 上传博客
进入output/
目录:
cd output
git init
git add .
git remote add origin https://github.com/Xiaoxin2009/Xiaoxin2009.github.io.git
git commit -am "commit"
git pull origin master
git push -f origin master
如果没有问题的话,打开浏览器输入http://username.github.io即可访问你的主页了。
5 主题
博客的初始主题当然不好看,你可以自已下载pelican相关的主题,放到myblog
目录下.执行下面的命令修改主题:
cd pelican-themes/
sudo pelican-themes -i bootstrap2
然后去pelicanconf.py文件中添加THEME = 'bootstrap2',然后重新make publish。
6 评论系统
如果你希望别人能给你的博客评论,需要借助评论系统,我用的是disqus它是美国一个第三方的评论系统,你也可以用国内的例如多说评论系统。你需要去这里注册一个disqus帐号,记住你的shorname,然后在pelicanconf.py文件中插入:
DISQUS_SITENAME = yourShortname
然后重新make publish。
7 网站跟踪
如果你还想知道有哪些人访问了你的网站,以及流量的一些信息,可以使用Google Analytics
功能,去Google Analytics创建新用户,记录下你得到的跟踪ID,然后在pelicanconf.py文件中插入:
GOOGLE_ANALYTICS ='跟踪ID'
congratulations!
附录 Git与SVN的区别
以前用过半年的svn,下面是我看到一篇关于svn与github的区别的文章,觉得不错。
- Git是分布式的,SVN不是.
这是Git和其它非分布式的版本控制系统(SVN,CVS)最核心的区别。如果你能理解这个概念,那么你就已经上手一半了。需要做一点声明,Git并不是目前第一个或唯一的分布式版本控制系统。还有一些系统如 Bitkeeper, Mercurial 等也是运行在分布式模式上的,但Git在这方面做的更好,而且有更多强大的功能特征。
-
Git跟SVN一样有自己的集中式版本库或服务器。
但 Git 更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库的服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。
同样,这种分布式的操作模式对于开源软件社区的开发来说也是个巨大的恩赐,你不必像以前那样做出补丁包,通过email方式发送出去,你只需要创建一个分支,向项目团队发送一个推请求。这能让你的代码保持最新,而且不会在传输过程中丢失,一个这样的优秀案例就是: GitHub.com
有些谣言传出来说subversion将来的版本也会基于分布式模式。但至少目前还看不出来。Git 把内容按元数据方式存储,而SVN是按文件把所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn、.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签、分支、版本记录等。 - Git 分支和SVN的分支不同
>分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。所以,经常会发生有些分支被遗漏的情况。
>然而,处理Git 的分支却是相当的简单和有趣,你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。
Git 没有一个全局的版本号,而SVN有目前为止这是跟SVN相比GIT缺少的最大的一个特征。你也知道,SVN的版本号实际是任何一个相应时间的源代码快照,它是从CVS进化到SVN的最大的一个突破。Git 可以使用SHA-1来唯一的标识一个代码快照,但这个并不能完全的代替SVN里容易阅读的数字版本号。
-
Git 的内容完整性要优于SVN
Git 的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
Comments !