Git 是围绕 仓库(Repository) 工作的。一个 Git Repository 可以简单理解为“一个已经被 Git 管理的项目文件夹”。普通文件夹只包含你的代码和文件,而 Git Repository 除了包含这些项目文件之外,还会保存 Git 用来记录历史版本的信息。
在实际开发中,开始一个 Git 项目通常有两种情况。第一种是你自己刚刚创建了一个新项目,希望从现在开始使用 Git 管理它,这时可以使用 git init。第二种是项目已经存在于 GitHub 上,你希望把它下载到自己的电脑上继续开发,这时通常使用 git clone。
方法一:使用 git init 创建一个新的 Git 仓库
假设你已经创建了一个新的项目文件夹:
my-project先在 Terminal 中进入这个目录,然后运行:
git init如果初始化成功,会看到类似下面的信息:
Initialized empty Git repository in ...从这一刻开始,这个普通文件夹就成为了一个 Git Repository。Git 会在项目目录中创建一个名为 .git 的隐藏目录,用来保存项目的版本历史、配置、Branch 等信息。
一般情况下,不需要手动修改 .git 目录里面的内容。只需要知道:一个文件夹中存在 .git,通常就意味着这个目录已经是一个 Git Repository。
使用 git status 查看仓库状态
创建 Git Repository 后,一个非常常用的命令是:
git status这个命令用于查看当前仓库的状态。例如,如果你刚创建了一个文件:
hello.txt再运行:
git statusGit 可能会显示:
Untracked files:
hello.txt这里的 Untracked 表示这个文件目前还没有被 Git 正式纳入版本记录。现在不需要急着理解所有状态,后面的内容会介绍文件如何从修改状态进入 Commit。现阶段只需要知道,遇到“不知道 Git 现在是什么情况”的时候,git status 往往是最值得先运行的命令。
方法二:使用 git clone 获取已有项目
实际工作中,我们更常遇到的情况不是从零创建仓库,而是一个项目已经存在于 GitHub 上,我们需要把它下载到本地。这时可以使用:
git clone <repository-url>例如:
git clone https://github.com/example/demo-project.git执行后,Git 会把这个 Repository 下载到当前目录,并自动创建一个项目文件夹:
demo-project/和普通下载文件不同,git clone 不只是下载当前代码,它还会把项目的 Git 信息和历史记录一起获取下来。因此,克隆完成后,这个项目本身已经是一个 Git Repository,不需要再执行:
git init也就是说,对于同一个项目,通常不会先 git clone 再 git init。如果项目已经在 GitHub 上,直接 Clone 就可以了。
知识测验
git init 和 git clone 应该用哪个?
这两个命令的用途其实很好区分。如果项目是你刚刚在电脑上新建的,希望从现在开始让 Git 管理,就使用:
git init如果项目已经存在于 GitHub,希望把完整项目下载到电脑,则使用:
git clone <repository-url>可以简单记成:
- 本地新项目 →
git init - GitHub 已有项目 →
git clone
例如,你打算从零写一个新的练习项目,那么可以创建文件夹后执行 git init。如果团队成员已经把项目放在 GitHub 上并把链接发给你,那么直接使用 git clone 即可。
一个简单例子
假设你准备自己创建一个新的项目:
mkdir git-demo
cd git-demo
git init然后检查仓库状态:
git status此时我们已经有了一个 Git Repository,只是里面暂时还没有 Commit。
另一种情况是 GitHub 上已经有一个项目,那么只需要:
git clone https://github.com/example/git-demo.git然后进入项目:
cd git-demo查看状态:
git status无论是使用 git init 还是 git clone,最终我们得到的都是一个可以使用 Git 管理的 Repository。
练习
分别为两个场景写出完整命令:
A. 创建 git-demo 文件夹并把它初始化为仓库;
B. 获取 https://github.com/example/git-demo.git 并进入项目。