30 天精通 Git 版本控管

 主页   资讯   文章   代码   电子书 

第 03 天:建立储存库

要开始使用 Git 最重要的就是要先有一份 Git 储存库 (Git Repository) 才行,但是,这份储存库从哪裡来呢?本篇文章会介绍多种建立储存库的方式。

要建立储存库,事实上,你有很多选择,例如:

  • 在本机建立本地的储存库 (local repository)
  • 在本机建立一个共用的储存库 (shared repository)
  • 在 GitHub 或其他 Git 平台建立远端的储存库 (remote repository)

无论如何,你总是需要一个储存库,我们分别说明如下:

在本机建立本地的储存库 (local repository)

我们先开启 GitHub for Windows 的 Git Shell 工具,这工具其实是个 Windows PowerShell 介面,但外挂了一些 Git 相关的环境变数与命令提示设定(Command Prompt):

image

开启后,预设会直接进入 %USERPROFILE%\Documents\GitHub 资料夹,这是 GitHub for Windows 的预设专案根目录,也就是只要预设透过 GitHub for Windows 从 GitHub 複製 (clone) 下来的专案都会放在这个目录。

所以,我们可以直接在这裡建立一个新目录,好当成我们的「工作目录」(working directory),我们可以输入指令 mkdir git-demo 把目录建立起来。然后再用 cd git-demo 进入该目录。

由于这是一个空目录,并不包含任何 Git 储存库,这时我们要建立储存库,就可以用 git init 指令把储存库给建立起来,预设储存库会放在工作目录下的 .git 目录下。

完整的操作步骤如下图示:

image

建立完成后,你在 Git Shell 的命令提示符号中,应该可以发现有些不太一样,他在目前所在路径后面加上了个高亮的 [master] 字样。这段提示,会显示你目前所在工作目录的各种状态,如果看得懂的话,是一个非常有用的资讯来源,可以让你在用命令列工具操作 Git 时,少打很多 git status 指令来查询目前工作目录的状态。这部分会再下一篇文章中特别说明。

在本机建立一个共用的储存库 (shared repository)

共用储存库 (shared repository) 是指建立一个 Git 储存库但不包含工作目录,这种情况比较常发生在 Linux 作业系统下,因为在 Linux 作业系统下通常都是多人使用同一台 Linux 主机。虽然在 Windows 作业系统也可以这样使用,不过我们的开发环境大多还是在 Windows Client 的环境,比较少有多人共用一台电脑的情况。

如果要建立共用储存库,可以使用 git init --bare 指令建立,如下图示。你可以发现,当 git init 加上 --bare 参数后,他会在当前目录建立所有 Git 储存库的相关档案与资料夹,你必须特别注意,这个资料夹不能直接拿来做开发用途,只能用来储存 Git 的相关资讯,大多数情况下,你都不应该手动编辑这个资料夹的任何档案,最好透过 git 指令进行操作。

image

由于这是一个「没有工作目录的纯储存库」,所以共用储存库也有个别名叫做「裸储存库」 (bare repository)。

再次强调,Git 属于「分散式版本控管」,每个人都有一份完整的储存库(Repository)。也就是说,当你想要建立一个「工作目录」时,必须先取得这个「裸储存库」的内容回来,这时你必须使用 git clone [REPO_URI] 指令「複製」(clone)一份回来才行,而透过 git clone 的过程,不但会自动建立工作目录,还会直接把这个「裸储存库」完整的複製回来。这个複製的过程,就如同「完整备份」一样,是把所有 Git 储存库中的所有版本纪录、所有版本的档案、...等等,所有资料全部複製回来。完整的指令操作过程可以参考以下图示:

image

在实务上,会使用「共用储存库」或「裸储存库」的方式可能有几种:

  • 在一台多人使用的机器上进行协同开发,可开放大部分人对这个「裸储存库的资料夹」仅有唯读权限,只让一个人或少许人才有写入权限。
  • 有些人会把裸储存库放到 Dropbox 跟自己的多台电脑同步这个裸储存库

请注意: 虽然「工作目录」下的 .git 目录也是一个「储存库」,不过工作目录下的储存库还包含一些工作目录下的索引资讯,纪录著工作目录下的状态资讯,这些状态资讯不会出现在 「共用储存库」裡面,这裡只有版本资讯而已 (也就是 Git 的物件资讯)。

在 GitHub 或其他 Git 平台建立远端的储存库 (remote repository)

其实「远端储存库」跟「共用储存库」几乎是一样的,差别仅在于「共用储存库」大多使用直接的档案存取,而「远端储存库」通常使用 SSH, Git protocol, HTTP 等协定可「远端」存取 Git 储存库,其他的使用方式基本上是一样的。

以下示范透过 GitHub 建立储存库,并将储存库複製回本地的情况:

  • 先登入 GitHub,然后建立一个新的储存库

image

  • 设定 GitHub 专案的相关资讯并建立储存库

image

  • 建立完成后,他会提示你要如何取得该专案,或将你本地现有的专案汇入到 GitHub

image

  • 如上图,我们可以在 Quick setup 的地方点击 "Set up in Desktop",你的电脑会自动开启 GitHub for Windows 工具,并自动複製(clone)这个储存库回来,并且建立工作目录。

  • 你也可以将远端 Git 储存库的网址複製(Copy)下来,然后执行 git clone [REPO_URL] 即可複製(clone)一份回来。

image

今日小结

以上就是三种建立 Git 储存库的方式。我重新整理一下本日学到的 Git 指令与参数:

  • git init
  • git init --bare
  • git clone [REPOSITORY_URI]

参考链接