在前面的讲解中,已经涉及到了一些 Git 仓库的知识。本节课来给大家详细说明下,可以算是一个补充。本节课会着重从以下两方面进行讲解,我们一起来看!

1. 生成本地 Git 仓库

我们知道,在 Git 上进行修改、提交、删除等操作时,这一切都是基于 Git 仓库来进行的,没有 Git 仓库,所有操作都是无源之水、无本之木。初始化一个 Git 仓库,也是我们安装配置完 Git 环境之后最先要做的事。那么,接下来就给大家介绍下如何取初始化生成一个 Git 仓库。

生成 Git 仓库大致有两种方法,下面一一介绍:

1.1 将本地的一个不受 Git 版本控制的目录转化成 Git 仓库

比如项目开始初期,你在本机电脑上搭建了一个项目基础框架,准备上传到 Git 与同事一起协作完成后面的内容,这时候第一步要做的肯定就是将本地的代码目录变成一个 Git 仓库,不然 Git 怎么去管理它呢,对吧?接下来就是见证奇迹的时刻。

a. 首先使用命令进入要初始化的目录,我这里使用的是 windows 的 Git Bash 命令行工具。命令如下:

$ cd D:/Git_study

其中,D:/Git_study 是我演示的目录,大家根据自己情况创建一个进行学习就行了。

b. 进入目录之后,只需要一个命令即可进行初始化:

$ git init

c. 执行完之后,可以在目录下看到多了一个.git 目录,就说明初始化成功。
图片描述
以上步骤的演示操作如下:
图片描述

补充说明:当执行 git init 的时候肯定有不少同学出现了如下报错:
图片描述

这是因为你创建的是一个空目录,Git 不允许初始化。一般情况下,我们的目录肯定是有内容的,如果你暂时没什么内容可写但又想要提交,那就在目录下建一个文件后再提交吧,比如我就建了一个叫 readme 的文件,里面内容随便写点就行。

1.2 从远程仓库克隆

如果你刚接手一个项目,或者是想要贡献一些开源的项目,那么肯定要将项目从远程仓库 “克隆” 到本地,那么你本地也成为一个 Git 仓库了,这就是第二种方式。怎么才能 “克隆” 下来呢?请看以下步骤:

a. 首先,要获取到你要克隆的项目地址,然后使用 “git clone” 命令操作,比如:

$ git clone https://github.com/javaDreame/testGit.git

b. 执行完毕后,出现如下提示则说明克隆成功。

$ git clone https://github.com/javaDreame/testGit.git
Cloning into 'testGit'...
remote: Enumerating objects: 59, done.
remote: Total 59 (delta 0), reused 0 (delta 0), pack-reused 59
Unpacking objects: 100% (59/59), done.

c. 克隆下来的仓库名字与远程仓库名字一样,可以进入命令执行时所在的目录查看是否已经克隆下来。

xujie@LAPTOP-SNCHOFFN MINGW64 /d
$ cd testGit/
xujie@LAPTOP-SNCHOFFN MINGW64 /d/testGit (master)
$ ls
test1.txt  testGit1/

以上,则说明没毛病!

老规矩,下面展示整个流程的操作动图:
图片描述

补充说明:关于 “git clone” 命令,上面演示的是执行默认操作,克隆相同名字的文件至本地。当然,还可以指定克隆到本地时换个文件名,只需要在上面命令的基础上多加一个参数即可,如下:

$ git clone https://github.com/javaDreame/testGit.git test

其中,test 即为我指定的名字。之后,克隆到你本地的这个项目文件名就是叫 test 的那个。

2. git clone

关于 “git clone” 这个命令操作,我还有一些想补充的。git clone,即克隆。它与别的版本控制系统的 “check out”(用过 SVN 的应该比较熟悉,就是指 “检出”)是有一定区别的,克隆会把服务器上所有数据的完整副本拉取下来,也就是会把每个文件的历史版本统统拉取下来。这样做有一个好处就是,服务器不幸挂掉的情况下,客户端几乎保留了所有的版本记录,使用任何一个客户端都可以恢复回原来的状态。这就是 git 的独特之处。

3. 总结

好了,又到了本节总结的时候了。通过本节内容,我们学到了搭建好 Git 环境后如何初始化一个仓库来进行 “开干”!以及关于 “git clone” 这个操作的理解。如下:

  • 初始化仓库:分为本地目录初始化和从远程仓库拉取的方式进行初始化
  • git clone 的理解:保留了相对最完整的版本记录