git clone命令:github ssh配置,--branch,--depth选项
本文将介绍如何使用git clone
命令。我将给你一个关于通过ssh克隆、--branch
选项和--depth
选项的快速概述。
1. 如何使用git clone
git clone
命令将一个远程仓库的全部内容复制到你的本地环境。我们可以向克隆的版本库提交新的修改,或者对其进行其他操作,然后推送回远程版本库。
克隆通常是在Github或Gitlab或Bitbucket等Git托管服务上进行。它很容易使用。拿出你的远程仓库的地址,输入下面的命令。
正如 git remote post 中所解释的,Git 支持多种通信协议。让我们以最流行的 HTTP(S) 协议为例。
$ git clone https://github.com/user/repo.git
你也会注意到远程版本库的地址以.git
结尾,正如在git init post中解释--bare
选项时提到的。
运行该命令将在当前目录下创建一个与版本库同名的文件夹,并将属于该版本库的文件下载到其中。下面是在Github repo地址上运行git clone
命令的结果,该地址是世界上星星数量最多的。
你可以看到回购中的所有内容都被复制到了
free-programming-books
目录下,这就是远程回购的名称。如果你想把它放在一个有不同名字的目录中,你可以这样写地址,后面跟上所需的目录名
$ git clone https://github.com/user/repo.git directory-name
2. 使用SSH克隆
SSH 是一种通信协议,使用公共/私人密钥对提供加密。它主要用于连接远程主机,当与Git一起使用时,它的好处是比https更容易认证,响应时间更快。
Git支持的通信协议列表见此帖。
然而,与无需任何配置即可使用的 HTTPS 协议不同,SSH 需要一些初始设置。这并不难,所以让我们逐步看看如何在Github上使用ssh。
2.1. 生成一个新的SSH密钥
首先,我们需要生成一个新的SSH密钥,但在这之前,让我们看看是否已经存在一个。像这样检查~/.ssh
目录。
$ ls -al ~/.ssh
Github上有三个输出文件: id_rsa.pub
, id_ecdsa.pub
, 和id_ed26619.pub
。如果它们不存在,用以下命令创建一个新的密钥文件。
$ ssh-keygen -t ed25519 -C "Github email"
运行这个的结果将是
输入命令后,你会得到三个提示。
第一个是问在哪里保存文件,如果你按下回车键而不输入,它将被保存到默认位置。 接下来是一个提示,让你输入ssh的口令,这是一个密码,以确保如果有人拿到你的ssh密钥文件,他们不能用它做他们想做的事。 在下一个提示中再次输入。
2.2. 在你的Github账户中注册你的ssh密钥
你需要在Github上注册你创建的ssh公钥。登录Github后,点击右上角的个人资料,打开菜单。双击 "设置"。
On the Settings screen, navigate to SSH and GPG keys under the Access menu.
Click the New SSH Key button to display the registration screen. The contents of the ssh key file can be copied to the clipboard with the following command.
$ pbcopy < ~/.ssh/id_ed25519.pub
如果你没有使用ED25519算法,请用适当的文件名替换它。然后把你从剪贴板上复制的密钥粘贴到下面的密钥部分,点击绿色按钮,注册新的ssh密钥。这时,系统会提示你再次登录以确认你的账户。
一旦注册完成,运行下面的命令来验证它是否被成功注册。
$ ssh -T git@github.com
在这一点上,根据我的SSH密钥文件算法,它将检查指纹是否匹配,然后尝试连接。指纹可以在 GitHub的SSH密钥指纹页面 (opens in a new tab)。
验证了指纹后,我输入了yes和口令,就可以正常连接了。
`2.3. git clone with ssh
现在初始设置已经完成。输入git clone
命令和远程仓库的ssh地址来进行克隆,如下所示。
$ git clone git@github.com:<username>/<remote-repo-name>
以下是执行的结果
也有一些方法可以避免每次都输入口令。我们将在另一篇文章中讨论这个问题。
3. 使用--分支选项克隆一个特定的分支
默认情况下,git clone
命令会克隆远程 repo 的默认分支,通常是master
或main
分支。
如果你想克隆另一个分支,有两种方法:在主分支被克隆后拉出另一个分支,或者使用clone命令的--branch
选项。
如果你需要从一个远程 repo 访问多个分支,你应该使用第一种方法。这是因为使用--branch
选项的克隆将不允许你访问其他分支。
下面是如何使用它
$ git clone --branch <branch-name> <repo-address>
让我们来试试它的实际效果
这样,我们就可以只克隆我们想要的分支了。
4. 用--深度选项只克隆你想要的历史记录
随着项目的增长,存储在 Git 仓库中的数据量也会增加。 提交历史也会相当长,在某些情况下,获取该仓库从开始到现在的所有数据可能是低效的。
--depth
选项就是针对这些情况的。有了这个选项,我们可以根据最后一次提交,指定要复制到本地环境的提交数量。
例如,如果我们只指定1个深度,我们将只得到最后一次提交的数据。
该命令看起来像这样
$ git clone --depth <depth> <repo-address>
让我们看看实际运行的结果
你可以看到,由于我们在克隆时设置了深度选项,所以在git log
命令中只显示了最后一次提交。
5. 总结
git clone
命令是一个必不可少的命令,不仅可以访问你自己的项目,还可以访问许多其他的仓库。
我希望这篇文章能帮助你理解并更多地使用git clone
命令。
