0x00 引言
记录一下我自己的Git + Github搭建细节,顺便记录Git、Hexo与MarkDown的相关知识。
0x01 Git
Git是目前世界上最先进的分布式版本控制系统,其安装方法这里就不再赘述,主要介绍一些常用的指令。
1 | 1 配置 |
1、配置
1.1、用户与邮箱
1 | #配置全局用户名与邮箱名,如果不是全局的则去掉--global |
1.2、CRLF与LF
CRLF, LF 是用来表示文本换行的方式,具体设置方式请查阅CRLF与LF。
1.3、SSH key
由于Git使用过程中直接传输帐号密码会不太安全,另外也很不方便(每次使用都要输帐号密码),因此可以考虑为Git帐号添加SSH key。
1 | # 生成公钥和私钥 |
1.4、添加远程仓库
默认clone下来的库,其名称均为origin,如果想重新给远程仓库起名字,则用以下代码:
1 | git remote add <仓库名> <仓库地址> |
2、远程主仓库、远程分仓库与本地仓库
我们创建的git仓库都是寄存在github服务器的,因此远程主仓库就是指某一项目最早被保存在github服务器内的哪个版本。有的时候我们需要多人合作,因此需要将主仓库fork下来,用于自行修改,但也保存在github服务器内,这种仓库叫做远程分仓库。
2.1、clone
克隆远程仓库可以用如下命令:
1 | # 假设要克隆user1的myRepository仓库 |
2.2、fork
fork即所谓的派生远程主仓库,其过程如下图
2.3、remote
本地仓库的分支维护,需要用到remote方法:
1 | # 查看所有分支信息 |
3、分支推送
3.2、commit
1 | # -m参数可直接打提交名 |
3.3、push
向远程仓库推送本地仓库的代码,用如下命令:
1 | # 完整的推送代码 |
4、分支拉取
分支拉取方式由fetch与pull两种,他们的区别如下图:
4.1、fetch
git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到本地分支中。
1 | #fetch更新,缺省参数相当于git fetch origin/master |
4.2、pull
git pull是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
1 | #pull更新,缺省参数相当于git pull origin/master |
5、分支合并
分支合并有rebase与merge两种方式。切记主分支内别用rebase,因为无法回溯到某个参与者提交的那次commit,查阅博客,有一个网站做了两者的使用实验。
5.1、rebase
rebase会把你当前分支的commit放到公共分支的最后面,所以叫变基。
1 | # rebase |
5.2、merge
merge 会把公共分支和你当前的commit合并在一起,形成一个新的commit提交。
1 | # 先合并分支 |
1 | # 如果分支有双方修改的冲突 |
6.2、补丁文件显示冲突
打补丁的方法比前面一种显得更加简洁,在合并之前,先测试被合并分支打的patch。
1 | # 切换到被合并的分支 |
7、回溯
7.1、本地修改清理
1 | # 放弃本地所有修改,代码与远程master一致 |
7.2、查看历史
1 | # 每个提交在一行内显示 |
7.3、本地版本回溯
1 | # 获取所有操作历史 |
7.4、远程版本回溯
1 | # 将版本回退提交到远程仓库 |
7.5、远程版本误回溯修复
1 | # 如果执行了 git push -f 误删除了其他人的提交 |
8、打标签
版本号用于标记比较特殊的版本:
1 | # 列出所有tag |
9、堆栈暂存
stash命令可以将修改的内容保存至堆栈区:
1 | # 保存至堆栈 |
10、清理历史记录
.git文件会记录所有的提交历史,删除所有提交记录,可采用如下措施:
1 | # 1.删除.git |
11、问责
1 | # 查询某个文件的修改历史事件 |
12、提交拣取
如果在B分支内想获取A分支的某些提交,则可以使用commit拣取 cherry-pick :
1 | # 查询A分支下的某个提交hash值 |
13、工作区代码管理
1 | # 添加已被跟踪文件的修改到这次commit中 |
14、删除某个commit记录
1 | # 假如有如下提交,并且想删除commit_B |
15、常用操作命令
1 | # 创建分支 |
0x02 MarkDown
Markdown是一种可以使用普通文本编辑器编写的标记语言,git博客的编辑语言默认为Markdown。这里记录一下与Markdown语言有关的一些教程。
1 | 1 Linux-Atom下部署MarkDown |
0x03 Hexo及主题
Hexo提供了快速方便的一键部署功能,让您只需一条命令就能将网站部署到服务器上。
1 | 1 Hexo命令 |
1、Hexo命令
这里记录几个Hexo常用的命令:
1 | #---新建一个网站--- |
2、主题与配置
这里写一些我自己用的主题,以及其配置。
2.1、Yilia
2.1.1、安装与配置
1 | #---安装Yilia--- |
0x04 Git与Hexo搭建博客
1 | 1 Git安装与配置 |
1、Git安装与配置
Git安装方法这里就不再赘述,主要讲用于部署Hexo的配置。
1.1、配置全局用户与邮箱
由于将Hexo部署到Github过程中需要校验用户,因此请确保全局用户与邮箱配置正确(配置方法在0x00->1.1)。
1.2、新建github.io仓库
每个Github帐号能够申请一个github.io仓库,用于链接自己的博客主页。
需要注意的是,Repository name中必须输入[用户名].github.io,具体的操作如下图所示:
2、Nodejs与npm安装
Nodejs安装方法这里就不再赘述;npm是一款包管理工具,安装方法也不再赘述。
3、Hexo安装与配置
在安装完Node.js与npm之后,就可以很方便地安装Hexo了:
1 | #安装Hexo |