-
1. 起步
-
2. Git 基础
-
3. Git 分支
-
4. 服务器上的 Git
- 4.1 协议
- 4.2 在服务器上部署 Git
- 4.3 生成 SSH 公钥
- 4.4 架设服务器
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方托管服务
- 4.10 小结
-
5. 分布式 Git
-
A1. 附录 A: Git 在其他环境
- A1.1 图形界面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 小结
-
A2. 附录 B: 在应用程序中嵌入 Git
-
A3. 附录 C: Git 命令
2.1 Git 基础 - 获取 Git 仓库
如果您只能阅读一个章节来开始使用 Git,那么就是本章。本章涵盖了您使用 Git 进行绝大多数操作所需的所有基本命令。到本章结束时,您应该能够配置和初始化仓库,开始和停止跟踪文件,以及暂存和提交更改。我们还将向您展示如何设置 Git 以忽略某些文件和文件模式,如何快速轻松地撤销错误,如何浏览项目历史并查看提交之间的更改,以及如何从远程仓库推送和拉取。
获取 Git 仓库
您通常可以通过两种方式之一获取 Git 仓库
-
您可以将一个当前未受版本控制的本地目录转换为一个 Git 仓库,或者
-
您可以从其他地方克隆一个现有的 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
。如果您熟悉 Subversion 等其他 VCS,您会注意到该命令是“克隆”而不是“检出”。这是一个重要的区别——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 仓库,以及每种选项的优缺点。