Git学习(一)

0x00 前言

Git是目前世界上最先进的分布式版本控制系统(没有之一)。

以前写的代码、文档之类的东西用完之后就被我无情抛弃了,以后要用的时候又需要重新写,麻烦,所以就想到了使用Git,将自己的文档、代码托管到GitHub上。

0x01 安装Git

在Windows上使用Git,直接从官网上下载安装程序,然后默认选项安装即可。

安装完成后,鼠标右键,出现如下图,说明Git安装成功!

安装完成后,还需要最后一步设置,鼠标右键“Git bash here”,在命令行输入:

1
2
$ git config --global user.name "Your Name"
$ git config --global user.email "Your Email"

注意: git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

0x02 创建版本库

什么是版本库呢?版本库又名仓库,英文名repository,可以理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的创建、修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

创建一个版本库也很简单,选择一个合适的地方,创建一个空目录

1
2
$ mkdir learnGit
$ cd learnGit

通过git init命令把这个目录变成Git可以管理的仓库

1
2
$ git init
Initialized empty Git repository in F:/PythonProject/.git/

这样仓库就建好了,但是里面是空的,其实当前目录下多了一个.git文件夹,这个目录是Git用来跟踪管理版本库的,千万不要乱动。

如果没有看到.git文件夹,可能是你把它隐藏了,可以用ls -la查看

0x03 三个工作区

  • 工作区: 指本地创建的目录,主要保存本地文件
  • 暂存区: git add之后文件进入的地方,此时文件还没有进入版本库
  • 版本库: 即仓库,git commit之后,文件从暂存区进入仓库

0x04 小试牛刀

我们先编写一个README.txt文件,内容如下:

1
2
Git is a version control system.
This is my first test for Git!

一定要放到learngit目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git找不到这个文件。

第一步,用git add <file>把文件添加到仓库

1
$ git add README.txt

执行完后没有任何回显,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。

第二步,用git commit提交文件到仓库

1
2
3
4
$ git commit -m "add a new README.txt file"
[master (root-commit) 6881823] add a new README.txt file
1 file changed, 2 insertions(+)
create mode 100644 README.txt

-m后面是本次提交的说明,可以输入任何内容,也可以不输。

说明: git add一次添加一个文件,git commit可以把多次add的文件一次性提交。

0x05 总结

今天主要学习如下:

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

  1. 使用命令git add ,注意,可反复多次使用,添加多个文件;
  2. 使用命令git commit -m ,完成。

这里要特别强调一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

不幸的是,Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,前面我们举的例子只是为了演示,如果要真正使用版本控制系统,就要以纯文本方式编写文件。

因为文本是有编码的,比如中文有常用的GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。