yi_Xu
菜单
置顶

【建站拾橞】第一期: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 生成,也就是在我博客的根目录,我使用了如下命令:

1
2
3
git init
git add .
git commit -m "first commit"

上述三句语句的说明:

  • 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 为例,添加远程库,并进行第一次推送。

1
2
git add remote origin https://github.com/yi-Xu-0100/www.yixuju.cn.git
git push origin master

命令说明:

  • 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 进行链接,有一些指令也是要了解的:

1
2
3
git config --global user.name "yourname"
git config --global user.email "your_email@youremail.com"
git -T git@github.com

命令说明:

  • 前两个命令分别在全局上注释了你的名字和邮件地址,第三个命令验证与 github 的链接。
  • 可能会提示将 GitHub 添加到信任列表,可以选 yes。

如果想要实现免密链接 GitHub 平台,生成 ssh 密钥指令如下:

1
ssh-keygen -t rsa -C "your_email@youremail.com"

通过 GitHub 添加密钥后,可以使用 ssh -T git@github.com 验证一下链接情况。

这篇文章讲解的非常详细。推荐阅读:【Git】1.创建 GitHub 仓库

hugo 搭建过程中的进阶操作

搭建过程中,为了更好的满足静态博客站点的要求,对仓库有一些特殊要求。其中免密链接,在上面已经说过,但是对强制更新站点等一些操作还要说明。但这些对于一般的 git 是没必要的,当操作是如此的破坏性时,其实说不上是 git 的美感,只不过是利用了 git 的链接操作方便而已。

静态站点的含义

静态博客,本质上就是一些目录清晰的 html 文件放在服务器上固定的位置供人访问。那么诸如 hexo 、 hugo 这类的静态站点生成器,则是根据需求和固定模板,将写好的文件,对应生成上述的 html 文件与目录。对源文件我们可以使用 GitHub 托管、保存修改记录,而对于生成的站点,我们也可以如此。而在服务器方面,直接通过 GitHub 下载,就可以将我们的站点部署在对应的位置。

重新恢复结构

为了防止诸如重装系统,换电脑这样的备份恢复活动, GitHub 提供了很好的托管恢复功能。

1
git clone https://github.com/yi-Xu-0100/www.yixuju.cn.git

使用上述命令,会将云端数据下载到本地。当然,如果你是站点生成,当然是下载源文件上传的那个仓库,记得更改好需要下载的地址。

强制推送

为了方便将本地数据强制覆盖云端数据,因为静态站点的改动会有点大,不如重新生成,所以使用强制推送命令。当然这个命令有一定的破坏性,希望使用者知晓这样操作的后果。

1
git push -f origin master

拉取与强制拉取

拉取(英文:pull)是为了将云端的进度拉取到本地,主要是为了方便多人合作项目。但对于静态站点,为了版本更替,需要拉取云端数据强制完全覆盖本地数据,所以需要用到强制拉取,此处仅提供相关指令以供参考。

  • 拉取

    1
    
    git pull origin master
    
  • 强制拉取

    1
    2
    3
    
    git fetch --all
    git reset --hard origin/master
    git pull
    

最后说明

本次文章结构仅按照指令和应用所写,作为个人的记录,内容已经算是详实。对于我现在所需操作,这些已足够囊括。还有的更好的操作可能会在后面的内容中补充,毕竟我对版本控制还没有很好的体会。