Git的Hexo博客搭建和运维实例讲解-初级

git遇上hexo

本文讲解从Hexo搭建到后续运维可能遇到的git代码实例,实例采用的是博主自定义的公开仓库,可以直接按照代码尝试,成功后再修改为自己的环境。本文以实战为主,原理点到为止,欢迎留言提问或者等待后续的文章。本文为初级内容,讲解最基础的实战内容,不定期更新。

搭建阶段

init本地仓库

1
2
3
mkdir hexo.junyu.pro
cd hexo.junyu.pro
git init

新建文件夹,转到新文件夹下初始化本地仓库,此时系统会自动生成.git的隐藏文件夹,查看隐藏文件的方法如下:

1
ls -ahl

如果此时发现自己的目录搞错了,可以 删除文件处理。

增加远程仓库

增加远程仓库有两种源模式遵从https协议或者ssh协议,代码如下:

1
2
git remote add origin https://gihub.com/Wangjunyu/hexo.junyu.pro.git
git remote add origin git@github.com:wangjunyu/hexo.junyu.pro.git

两种方式均可以,建议尽量采取ssh模式。如果你一不小心给git增加了一个空的origin源怎么办?不要问我为什么会想的这么全,我是不会告诉你们这些坑我都踩过的。办法看这里

增加第二个源

让更多人看到你的博客提到Github禁止百度的爬虫,所以有可能需要github和codingnet同时部署,所以需要增加第二个源,方法和第一个源增加类似。git remote add codingnet除了把origin换成你自己喜欢的源名称(我用的是codingnet),就是你的远程仓库地址了,查看一下网页可以得到答案,建议还用ssh模式。

添加博客主题

以博主使用的next主题为例,代码如下:

1
git submodule add https://github.com/iissnan/hexo-theme-next themes/next

为何这里使用git submodule而不是git clone挑选和初步配置Hexo主题有详细说明。
更彻底的方案是建议先在github上fork主题仓库,然后submodule自己的仓库的主题文件:

1
git submodule add https://github.com/Wangjunyu/hexo-theme-next themes/next

具体原因来自重建Hexo的教训,不再赘述。

远程仓库同步

和远程仓库同步内容主要有两个操作,pull和push。如果是刚建立的博客,远程仓库的内容是空的,要把本地仓库的内容push到远程仓库:

1
git push origin master

如果自己已经在远程仓库设置好了博客,需要把内容pull到本地电脑上:

1
git pull origin master

其中origin是源的名字,可以换成codingnet或者你自己的命名,master是分支的名称,请根据需要调整。如果我没有写这两个参数报错了怎么办?看这里

查看仓库状态

到目前为止,都还没有涉及到git的重要特性:分支。考虑到不同人的不同需求,有的是直接pull一个远程仓库,有的是要push到新的远程仓库。无论是哪一个,执行下面的代码有利用了解现状的仓库状态,决策下一步行动。

1
git status

运维阶段

利用新的分支撰写博客

1
2
git master -a
git checkout -b newbranchname

第一行代码先检查现在分支的状态,在动手前确认现状是一个好习惯。第二行代码在本地新建一个newbranchname分支,也可以换成你需要的任何名字,并且转到这个分支下,这点很重要,这时候你写的内容后续add和commit之后会在新的分支下。

从Github的origin源pull更新

1
2
git status
git push origin master

从远程仓库中pull下来最新的内容,如果有冲突pull有可能会失败,要求merge之后再操作。

修改内容push到Github的origin源

1
2
3
git add .
git commit -m "your message"
git push origin master

把此次修改的内容全部添加到工作区,提交版本,并同步到远程仓库origin的master分支上。注意git add .的写法是把从上一个版本开始到现在的所有变化内容全部添加到工作区,这里需要自己去判断是否要全部添加,如果不需要,则可以根据自己的需要选择部分文件增加。

问题处理

Oops,一不小心,建错了仓库

在自己对终端命令不熟悉的日子里,经常会出现初始化之后才发现搞错了目录,如何处理?
在相同的目录下执行命令rm -rf .git强制删除 .git的文件夹。

如果很多的git文件都错了,可以用下面的查找并删除命令,注意,这个命令会同时删除子文件夹中的git配置文件。

1
find . | grep .git | xargs rm -rf

建立了空的源,怎么办?

git remote add origin会建立一个空的源,再次执行该代码的时候会出现fatal: remote origin already exists.的报错。解决问题有三个办法:

  • 命令设置空源对应的url

    1
    git remote set-url origin http://github.com/Wangjunyu/hexo.junyu.pro.git
  • 手动修改.git文件(不推荐,因为没有必要)

  • 删掉重新配置
    1
    2
    git remote rm origin
    git remote add origin git@github.com:wangjunyu/hexo.junyu.pro.git

关于git remote命令,可以通过git remote --help了解详情。

pull或者push操作没有添加参数报错

如果git pull或者git push报错了,一般是没有设置默认的远程仓库分支,或者有多个远程仓库的源会出现这样的情况,程序不知道该向哪一个远程仓库的分支发送请求执行程序。

1
2
3
4
5
localhost:blog.junyu.pro Leonwang$ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master

此时一般git会给出解决办法。git branch --set-upstream-to=origin/master master。这个代码不需要记,一般git的提示信息都会有,直接复制粘贴就可以了,但是要注意检查对应的仓库和分支是不是自己要做操作的,如果不是,请手动修改对应的变量。

Reference

git - how to remove git tracking from a project?

声明: 本文转载需标明出处,禁止用于商业目的。

ChangeLog

161127 新建