【建站拾橞】第一期:git 初探与基础应用
因为个人喜好,我学习了相关的基础知识,搭建了这个静态博客。在这摸索的过程中,我学到了许多东西,希望记录下一些应用心得。第一期的内容,主要是结合经历,对 git 的基础操作有个记录。
git 初探——什么是 git 与为什么用它
刚开始我在网上看到与博客相关的文章中,用到一些静态站点生成器结合 github page。那时候的感觉是:哇,这就是极客风啊!不得不说,一些英文单词加英文网站,就能很好的体现逼格的感觉。但其实,由于现在计算机的大规模解析是按照英文字母对于而来,而且中文拼音有太多歧义,所以才造成英文仿佛是计算机中的贵族。
我向来只是喜欢探讨这种情况的普适价值和使用价值的。如果在最开始的计算机中的二进制与中文字符对应解析,并尽量确定规范,没准全世界得学中文呢~当然,我这里的论断,仅仅体现了一种看法。我仅仅想借此表现出:
学习 git 过程中,乃至于学习各种计算机知识的过程中,英文是绕不过去的坎。我们也没必要了解所有的英文单词,但对一些操作中需要了解的,就顺手了解一下也不为过,一切以应用为主,万事万物为我所用为上。
谈了一大段的态度问题,我们就进入了看待这个 git
所代表的含义。在这里,git 仅仅是一个工具,相当于一个软件,只不过它一般是没有界面可供操作,也就是命令行软件,当然也有一些相关的图形界面类软件可供使用。它所能代表的含义也仅仅只不过是如同 QQ
这个名字对于 QQ 本身的意义,一个叫法,以及可以用来特指内部的一些指令,如:QQ 截图,QQ 秀……
如果说你了解了 git 这个名字的意义之后,我想你已经不厌其烦的想要了解它是怎么用的了,没用我了解他干什么?
在这里,我仅结合我所了解和所学的,对 git 的基本应用给出一个说明:
- 它能够记录文件的不同版本变化,方便查找、对比文件更新过程中差异
- 它有着一些平台支持,方便将相关资料或源文件保留于云端备份
- 它的开源属性满足个人使用,方便个人做相关备份
- 一些开源平台上基于它托管着许多开源项目,给人方便学习
那从这些功能中我找到了一些学习 git 的必要:
- 版本追踪,方便我恢复和对比
- 云端备份,方便我对一些项目或者内容的管理
- 开源属性,给我一种安全的感觉
- 开源平台,让我能够探索学习
git 的基本指令
谈到 git ,网上有许多相关的学习教程,那些静态博客建站刚开始,也都呼吁学习一下 git 的相关操作。我也不可能写出什么新意,所以我仅仅对我用到的一些指令做一个记录和总结。
git 仓库建立与第一次提交更改
git 中的仓库(英文:Repository,有时缩写:repo),其实就是一个项目或者一个目录的称呼。不过因为在根目录使用 git init
指令,会新生成一个 .git
文件夹,其中保存了相关的版本的信息,就像是储存了所有的项目更替信息的仓库一样。
在这里,着重说明一下,git 的基本操作来给我们的静态博客的源文件进行一个备份。现在我的博客使用的是 Hugo 生成,也就是在我博客的根目录,我使用了如下命令:
|
|
上述三句语句的说明:
git init
命令执行后会新生成一个.git
文件夹,此时我们已经算是建立了 git 仓库,此命令一般仅用于第一次创建版本库。git add .
表示将所有更改保存到暂存区,可以认为是一次小保险。其中git add
后接某一文件,或者通配符匹配的文件也可以来提交更改保存。当然,git add .和 git add –all 是有一定区别的,你可以根据区别需求操作,我从网上找了个说明:git add -A 和 git add . 的区别git commit -m "first commit"
是用于将暂存区的所有更改做一次整体提交。其中 git commit 为主要命令,因为整个提交需要加上说明的信息(英文 message,缩写为 m)。当然,你也可以找到不加这个参数的方法,但我建议加上以来区分更改,此处不提供方法指引。
添加远程库与推送
为了能够借用平台托管的优势,可能会有添加远程库的需要。此处以 github 为例,添加远程库,并进行第一次推送。
|
|
命令说明:
git add remote origin https://github.com/yi-Xu-0100/www.yixuju.cn.git
,此命令是将 GitHub 中的位置添加到这个仓库的远程库列表中。git push origin master
此命令是将当前仓库的 master 分支推送到远程库分支上。- 这两个命令有一些要求,第一个命令的远程库链接是由 github 创建库后获得。第二个命令没有特殊情况,此时应该保持远程库中为空,以避免合并更改问题。
- 从网上找了个 GitHub 建立新仓库的参考文章,真的详细!【Git】1.创建 GitHub 仓库 。
github 的一些相关指令
为了很好的对 GitHub 进行链接,有一些指令也是要了解的:
|
|
命令说明:
- 前两个命令分别在全局上注释了你的名字和邮件地址,第三个命令验证与 github 的链接。
- 可能会提示将 GitHub 添加到信任列表,可以选 yes。
如果想要实现免密链接 GitHub 平台,生成 ssh 密钥指令如下:
|
|
通过 GitHub 添加密钥后,可以使用 ssh -T git@github.com
验证一下链接情况。
这篇文章讲解的非常详细。推荐阅读:【Git】1.创建 GitHub 仓库
hugo 搭建过程中的进阶操作
搭建过程中,为了更好的满足静态博客站点的要求,对仓库有一些特殊要求。其中免密链接,在上面已经说过,但是对强制更新站点等一些操作还要说明。但这些对于一般的 git 是没必要的,当操作是如此的破坏性时,其实说不上是 git 的美感,只不过是利用了 git 的链接操作方便而已。
静态站点的含义
静态博客,本质上就是一些目录清晰的 html 文件放在服务器上固定的位置供人访问。那么诸如 hexo 、 hugo 这类的静态站点生成器,则是根据需求和固定模板,将写好的文件,对应生成上述的 html 文件与目录。对源文件我们可以使用 GitHub 托管、保存修改记录,而对于生成的站点,我们也可以如此。而在服务器方面,直接通过 GitHub 下载,就可以将我们的站点部署在对应的位置。
重新恢复结构
为了防止诸如重装系统,换电脑这样的备份恢复活动, GitHub 提供了很好的托管恢复功能。
|
|
使用上述命令,会将云端数据下载到本地。当然,如果你是站点生成,当然是下载源文件上传的那个仓库,记得更改好需要下载的地址。
强制推送
为了方便将本地数据强制覆盖云端数据,因为静态站点的改动会有点大,不如重新生成,所以使用强制推送命令。当然这个命令有一定的破坏性,希望使用者知晓这样操作的后果。
|
|
拉取与强制拉取
拉取(英文:pull)是为了将云端的进度拉取到本地,主要是为了方便多人合作项目。但对于静态站点,为了版本更替,需要拉取云端数据强制完全覆盖本地数据,所以需要用到强制拉取,此处仅提供相关指令以供参考。
-
拉取
1
git pull origin master
-
强制拉取
1 2 3
git fetch --all git reset --hard origin/master git pull
最后说明
本次文章结构仅按照指令和应用所写,作为个人的记录,内容已经算是详实。对于我现在所需操作,这些已足够囊括。还有的更好的操作可能会在后面的内容中补充,毕竟我对版本控制还没有很好的体会。