0%

Tiny Tutorial for Git

Git 是 Linus 在开发 Linux 时为了解决版本管理和协作而开发的工具。笔者第一次用 Git 是在信息架构的课上,主要原因是跟风,那时候只会三个操作:add, commit, push。但是真正开始理解并且掌握一些复杂操作是在去字节实习之后,大概是只有遇到10分的需求才能学到5分的能力。

这篇文章希望能让你用最低的成本立刻加入一个基于 Git 的团队协作,你可能会学到:

  • Git 有什么好处
  • Git 安装和配置
  • Git 基础操作之添加
  • Git 进阶操作之恢复

Git 有什么好处

Git 增加了代码的维度:一个时间维度、一个空间维度。时间维度就是你可以通过 Git 来掌控你不同时间的不同版本;同时你能创建多个 Git 分支,在不同的分支世界里开发不同的功能。Git 最牛逼的就是他能把两种维度完美融合,非常方便切换或者合并,这里说的有些抽象,以后再悟。

总之 Git 有这么两个显著优点:

  • 版本管理的踏实感:“上一版可用的代码已经乖乖躺在 Github(被封存到北极的冰山下了)里了,不管之后写出怎么样的屎都可以随时恢复。”

  • 团队协作有迹可循:不用在微信里经受疯狂传文件导致的 code.py(1)(1)(2)(2)(2) 这样的地狱了。

Git 安装和配置

Git 是一个开源软件,大多数程序员使用命令行版本(写 git xxx 命令),但是也有可视化的 GUI(Graphical user interface)客户端,常见的有 GitHub Desktop 等。虽然 GUI 鼠标操作简单,但是如果可以的话还是最好用命令行,因为能搜到的教程大部分都是用命令行的,而且 GUI 用着似乎不怎么会让人有长进。

命令行版的 Git 的安装有些麻烦,特别是直接下载安装包的方式「其他方式就是 brew, apt-get, yum 之类的命令行工具,需要看这个教程的话你大概是不会的」,因为会有很多选项,但是不要怕,全都选默认就行了,大多数选项之后可以改,而且其实你根本用不上。

关于到底用命令行还是 GUI,笔者觉得如果之后还想继续混就用命令行版的吧,不过本文的后面两节。另外,具体的安装教程的话网上去搜吧,太多了,不想在这里浪费文字了。这里提供两个我随手搜的。

Git 基础操作之添加

先不管命令行还是 GUI,先了解 Git 到底是怎么工作,基础操作部分讲解一下 init, clone, add, commit, push 这五个操作。

Git Init

初始化一个仓库。如果你在命令行输入这个命令,那么当前的文件夹下会多出一个 .git 文件夹,这是个隐藏文件夹,里面藏着 Git 化腐朽为神奇的一切,但是你不需要理解甚至看它一眼。

初始化之后你的项目就是一个有 Git 功能的项目了。

注意,虽然 Init 是一个项目加入 Git 的第一步,但是很多时候你面对的往往并不是一个新项目:而是一个别人已经在开发的,或者是你刚在 Gibhub 新建的项目(自动 init 了)。因此下一个操作比 Init 更常用。

Git Clone

从别的地方克隆(clone)一个已经在开发的项目(repository),常见的情形就是你的合作伙伴先建了一个 repository 然后你想加入,或者只是下载下来观看。这里的“别的地方”一般就是 Github(全球最大男性交友平台) 、Gitee 之类所谓的 Git 托管服务平台。

以命令行举例(注意美元符号一般作为提示这是命令行,不是命令的一部分):

1
$ git clone https://github.com/fishiu/learngit.git

https:xxx.git 是平台提供的链接,clone 结束之后你当前的文件夹下就多了一个叫 learngit 的项目了,这个项目里有一个 .git 的文件夹维持着一切 Git 世界的秩序。

Git Add

当你做了一些

1
$ git add -A .  # -A 表示把所有当前目录下的文件都加入 Stage 中

注释:一个点就表示所在命令行的当前目录,也可以写成 ./,更多信息请搜索命令行相对文件路径

当前目录可以通过 cd <目标目录> 来切换

笔者刚学 Git 的时候就是毫无灵魂的 git add -A . + git commit -m "upload" + git push ,不太理解为什么一定要先 add

这里需要想一想,add 到哪里去?其实是 add 到一个叫做 Stage 的暂存区 ,可以认为是版本管理的一个缓冲吧,相比 Commit 区,Stage 区的添加是不会被记录下版本号的,再深入的理解可能还是慢慢悟比较好。

image-20211224014104293

Git Commit

Commit 的前提条件:已经有代码通过 add 命令被加到 Stage 了

1
$ git commit -m "some message"  # 引号里的东西是该commit的消息记录

Commit 之后你的版本终于有迹可循了,会生成一串ID作为该 Commit 在项目中的唯一识别,你可以根据这个Commit ID 来追溯该版本或者和新版本比较。

【未完待续】