如何从远程Git存储库克隆特定分支

时间:2020-01-09 10:34:22  来源:igfitidea点击:

说明

在本快速教程中,将向我们展示如何从远程Git存储库克隆特定分支。从远程存储库克隆分支后,默认情况下将拉动master分支。虽然对于大多数用例来说,这可能是理想的,但有时我们一开始只想要一个特定的分支。

从远程仓库中克隆时,Git允许我们使用-b标志来指定分支名称。

克隆特定的远程分支

在以下示例中,我们将克隆官方WordPress存储库。 WordPress为每个版本创建一个分支,如果我们仅对5.2版本感兴趣,我们可以拉下该分支而不是master。

git clone -b 5.2-branch https://github.com/WordPress/WordPress.git

如以下示例输出所示,该命令的输出与未指定分支的情况相同。

Cloning into 'WordPress'…
 remote: Enumerating objects: 82, done.
 remote: Counting objects: 100% (82/82), done.
 remote: Compressing objects: 100% (62/62), done.
 remote: Total 297255 (delta 56), reused 43 (delta 20), pack-reused 297173
 Receiving objects: 100% (297255/297255), 184.84 MiB | 1.68 MiB/s, done.
 Resolving deltas: 100% (238351/238351), done.
 Checking connectivity… done.
 Checking out files: 100% (2156/2156), done.

当然,唯一的例外是master分支尚未与5.2分支分支一起被下拉。我们可以通过运行git branch命令来验证这一点。

git branch
* 5.2-branch

仅克隆单个分支历史记录

当单独使用-b标志时,我们将下拉存储库的整个历史记录,包括有关其他分支的详细信息。如果只希望克隆分支的历史记录,则可以使用单分支标志。

在持续集成(CI)管道中,使用单分支标志非常有用,因为我们只关心正在构建的分支的历史记录。我们不会浪费不必要的空间来污染构建服务器,在处理历史悠久的大型项目时,这一点很重要。

git clone -b 5.2-branch --single-branch   https://github.com/WordPress/WordPress.git

让我们将此命令的输出与上面的输出进行比较。

Cloning into 'WordPress-Single'…

remote: Enumerating objects: 55, done.

remote: Counting objects: 100% (55/55), done.

remote: Compressing objects: 100% (41/41), done.

remote: Total 269795 (delta 33), reused 29 (delta 14), pack-reused 269740

Receiving objects: 100% (269795/269795), 157.62 MiB | 1.86 MiB/s, done.

Resolving deltas: 100% (216860/216860), done.

Checking connectivity… done.

Checking out files:  34% (734/2156)

Checking out files:  35% (755/2156)

Checking out files: 100% (2156/2156), done.

立即我们应该注意到枚举对象的数量要少得多,我们也可以通过查看对象大小差异来确认这一点。

我们所做的第一个克隆(不使用单分支标志)的对象大小为184 MiB,而第二个克隆的对象大小为157 MiB。