章节 ▾ 第二版

2.1 Git 基础 - 获取 Git 仓库

如果你只想读一个章节就能开始使用 Git,那么就是这个章节。本章涵盖了所有你需要的基本命令,可以完成你大部分时间会用 Git 做的事情。在本章结束时,你应该能够配置和初始化一个仓库,开始和停止跟踪文件,以及暂存和提交更改。我们还将向你展示如何设置 Git 来忽略某些文件和文件模式,如何快速轻松地撤销错误,如何浏览项目历史并查看提交之间的更改,以及如何从远程仓库推送和拉取。

获取 Git 仓库

你通常通过以下两种方式之一获取 Git 仓库:

  1. 你可以将当前未受版本控制的本地目录转换为 Git 仓库,或者

  2. 你可以克隆一个现有的 Git 仓库。

无论哪种情况,你的本地机器上都会有一个 Git 仓库,可以开始工作。

在现有目录中初始化仓库

如果你有一个当前未受版本控制的项目目录,并且想开始用 Git 控制它,你首先需要进入该项目目录。如果你从未这样做过,它会根据你运行的系统略有不同:

对于 Linux

$ cd /home/user/my_project

对于 macOS

$ cd /Users/user/my_project

对于 Windows

$ cd C:/Users/user/my_project

然后输入

$ git init

这会创建一个名为 .git 的新子目录,其中包含所有必要的仓库文件——一个 Git 仓库骨架。此时,你的项目中没有任何内容被跟踪。有关你刚刚创建的 .git 目录中包含的文件的详细信息,请参阅Git 内部原理

如果你想开始对现有文件进行版本控制(而不是空目录),你可能应该开始跟踪这些文件并进行初始提交。你可以通过几个 git add 命令指定要跟踪的文件,然后是 git commit 来完成此操作:

$ git add *.c
$ git add LICENSE
$ git commit -m 'Initial project version'

我们将在稍后介绍这些命令的作用。此时,你已经有了一个带有已跟踪文件和初始提交的 Git 仓库。

克隆现有仓库

如果你想获取现有 Git 仓库的副本——例如,你想要贡献的项目——你需要使用的命令是 git clone。如果你熟悉其他 VCS,例如 Subversion,你会注意到命令是“clone”而不是“checkout”。这是一个重要的区别——Git 不是只获取一个工作副本,而是获取服务器上几乎所有数据的完整副本。当你运行 git clone 时,默认会拉取项目历史中每个文件的每个版本。事实上,如果你的服务器磁盘损坏了,你通常可以使用任何客户端上的几乎任何克隆来将服务器恢复到克隆时的状态(你可能会丢失一些服务器端钩子等,但所有版本控制数据都将存在——有关更多详细信息,请参阅在服务器上安装 Git)。

你可以使用 git clone <url> 克隆仓库。例如,如果你想克隆名为 libgit2 的 Git 可链接库,你可以这样做:

$ git clone https://github.com/libgit2/libgit2

这会创建一个名为 libgit2 的目录,在其内部初始化一个 .git 目录,拉取该仓库的所有数据,并检出最新版本的工作副本。如果你进入刚刚创建的新 libgit2 目录,你会看到项目文件在那里,可以开始工作或使用了。

如果你想将仓库克隆到名为 libgit2 以外的目录中,你可以将新目录名指定为附加参数:

$ git clone https://github.com/libgit2/libgit2 mylibgit

该命令执行与上一个命令相同的操作,但目标目录名为 mylibgit

Git 有许多不同的传输协议可供你使用。上面的示例使用 https:// 协议,但你可能还会看到 git://user@server:path/to/repo.git,后者使用 SSH 传输协议。在服务器上安装 Git 将介绍服务器可以设置的所有可用选项,以访问你的 Git 仓库,以及每个选项的优缺点。