git遇上hexo
本文讲解从Hexo搭建到后续运维可能遇到的git代码实例,实例采用的是博主自定义的公开仓库,可以直接按照代码尝试,成功后再修改为自己的环境。本文以实战为主,原理点到为止,欢迎留言提问或者等待后续的文章。本文为初级内容,讲解最基础的实战内容,不定期更新。
搭建阶段
init本地仓库
mkdir hexo.junyu.pro
cd hexo.junyu.pro
git init
新建文件夹,转到新文件夹下初始化本地仓库,此时系统会自动生成.git的隐藏文件夹,查看隐藏文件的方法如下:
ls -ahl
如果此时发现自己的目录搞错了,可以 删除文件处理。
增加远程仓库
增加远程仓库有两种源模式遵从https协议或者ssh协议,代码如下:
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主题为例,代码如下:
git submodule add https://github.com/iissnan/hexo-theme-next themes/next
为何这里使用git submodule
而不是git clone
在挑选和初步配置Hexo主题有详细说明。
更彻底的方案是建议先在github上fork主题仓库,然后submodule自己的仓库的主题文件:
git submodule add https://github.com/Wangjunyu/hexo-theme-next themes/next
具体原因来自重建Hexo的教训,不再赘述。
远程仓库同步
和远程仓库同步内容主要有两个操作,pull和push。如果是刚建立的博客,远程仓库的内容是空的,要把本地仓库的内容push到远程仓库:
git push origin master
如果自己已经在远程仓库设置好了博客,需要把内容pull到本地电脑上:
git pull origin master
其中origin是源的名字,可以换成codingnet或者你自己的命名,master是分支的名称,请根据需要调整。如果我没有写这两个参数报错了怎么办?看这里
查看仓库状态
到目前为止,都还没有涉及到git的重要特性:分支。考虑到不同人的不同需求,有的是直接pull一个远程仓库,有的是要push到新的远程仓库。无论是哪一个,执行下面的代码有利用了解现状的仓库状态,决策下一步行动。
git status
运维阶段
利用新的分支撰写博客
git master -a
git checkout -b newbranchname
第一行代码先检查现在分支的状态,在动手前确认现状是一个好习惯。第二行代码在本地新建一个newbranchname分支,也可以换成你需要的任何名字,并且转到这个分支下,这点很重要,这时候你写的内容后续add和commit之后会在新的分支下。
从Github的origin源pull更新
git status
git push origin master
从远程仓库中pull下来最新的内容,如果有冲突pull有可能会失败,要求merge之后再操作。
修改内容push到Github的origin源
git add .
git commit -m "your message"
git push origin master
把此次修改的内容全部添加到工作区,提交版本,并同步到远程仓库origin的master分支上。注意git add .
的写法是把从上一个版本开始到现在的所有变化内容全部添加到工作区,这里需要自己去判断是否要全部添加,如果不需要,则可以根据自己的需要选择部分文件增加。
问题处理
### Oops,一不小心,建错了仓库 在自己对终端命令不熟悉的日子里,经常会出现初始化之后才发现搞错了目录,如何处理? 在相同的目录下执行命令`rm -rf .git`强制删除 `.git`的文件夹。如果很多的git文件都错了,可以用下面的查找并删除命令,注意,这个命令会同时删除子文件夹中的git配置文件。
find . | grep .git | xargs rm -rf
- 命令设置空源对应的url
git remote set-url origin http://github.com/Wangjunyu/hexo.junyu.pro.git
- 手动修改.git文件(不推荐,因为没有必要)
- 删掉重新配置
git remote rm origin
git remote add origin git@github.com:wangjunyu/hexo.junyu.pro.git
关于git remote
命令,可以通过git remote --help
了解详情。
如果git pull
或者git push
报错了,一般是没有设置默认的远程仓库分支,或者有多个远程仓库的源会出现这样的情况,程序不知道该向哪一个远程仓库的分支发送请求执行程序。
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?
[完](http://blog.junyu.pro)
声明: 本文转载需标明出处,禁止用于商业目的。
ChangeLog
161127 新建