A Sketch of Git Theory

What is Git, and how about Github and Github Pages?

A Sketch of Git Theory

What is Git, and how about Github and Github Pages?

本文是一篇入门文章,简单介绍了 Git、 GitHub 以及 GitHub Pages。

Git

Git 是一个版本控制工具。

版本控制是什么意思?

版本控制

比如,你想对电脑上某个文件夹进行版本控制,你首先会告诉 Git :

“这个文件夹的一举一动,帮我盯紧了!”

具体实现:安装 Git(Git 官网),在项目文件夹中,右键 -> Git Bash Here,打开 Git 命令窗口,执行 git init 命令。

Git 就会把这个文件夹看成一个 Git 仓库(repository)来照看它,仓库里多了什么、少了什么,都逃不过 Git 的火眼金睛。

接着,你在这个仓库中删除了一些文件,又新建了一些文件,还修改了一些文件,告诉 Git:

“这是这个库的一个新的版本了,记住它。”

具体实现:先暂存,后提交

暂存版本:git add .

提交新版本:git commit -m "<提交信息>"

Git 就会在小本子上记下:

“某年某月某日,主人提交了这个仓库(repository)的一个新版本,现在仓库里有这些文件,文件的内容分别是 XXX...

很多天过去了,你又作了很多改动,提交了很多个版本。

你显然难以完整记得自己改了哪些地方。

因为一些原因,你想要把这个文件夹恢复到某个历史版本,Git 能帮你做到:

“Git 哟,请把这个文件夹(或者说仓库, repository)恢复到某年某月某日我提交的那个版本啊~”

根据不同需求,版本回退有多种命令行实现。

Git 就会开始翻看它的小本子,看到自己之前写的记录,想道:

  • 那个历史版本有这些文件,文件内容是XXX...
  • 现在的仓库内容是XYY...
  • 现在的版本多出了 YY...,少了 XX...
  • 根据比较结果,可以进行版本回退
  • 于是,我把现在的这个仓库(repository,或者说文件夹)改变了回那天提交的版本.

这样,你就会看到这个文件夹里的文件和它们的内容都变回历史版本了。

Git 分支

你可以让 Git 对同一个仓库(repository)建立很多“小本子”,它们相互独立。

每本小本子就是项目的一个 Git 分支

具体实现:执行 git checkout -b <新分支的名字>,可以基于当前分支新建一个分支

你和你的合作者们分工,一项大任务专门用一本小本子控制版本,各自独立工作。

切换分支: git checkout <分支名>

大家都完成任务后,把本子合并起来,就把整个项目安全地往前推进了一大步。

合并分支: git merge

这种相互独立的“小本子工作法”就是使用 Git 分支的工作流程,也是 Git 工作的精髓之一。

Git 本地仓库-远程仓库

仓库可以建立在本地(本地仓库),也可以建立在服务器上(远程仓库)。

你可以把一些本子放到网络服务器上,更新服务器上的仓库。

具体实现:执行 git push

也可以把网上的“小本子”克隆到本地,从而能同步本地的仓库。

具体实现:根据情境,使用 git pullgit clone

  • 远程分支(remote branch):这些放在网络服务器上的小本子
  • 远程仓库(remote repository):储存在网上、使用这些远程分支进行“版本控制”的文件夹(repository)

About GitHub

GitHub 是由一批优秀程序员搭建起来的 Git 远程仓库的免费托管平台。

只需要在 GitHub 网站进行简单账户设置,用 Git 命令让它和本地的 Git 客户端关联起来,就可以实现在线版本管理、同步甚至多人协作的功能,而不用自己搭建服务器、建立远程仓库了,岂不美哉?

About GitHub Pages

GitHub Pages 是 GitHub 的一个功能,可以帮助你搭建自己的展示网站,原理是:

  • 读取你发布到 GitHub 上的特定远程仓库
  • 把里面的文件渲染成对应的网页
  • 用 GitHub 自己的服务器帮你把网页搭建在以你的用户名作为一部分命名的网址上( 例如 username.github.io/ )

现在你对整个原理应该有大致理解了~