Git---clone(克隆仓库)

  • 列出GitHub上某人的所有仓库列表
    $ GHUSER=PeaceWanghp; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*'

  • 克隆远程仓库
    在当前目录下克隆一个名为libgit2的目录,可以用下面的命令:
    $ git clone https://github.com/libgit2/libgit2
    如果想在克隆远程仓库时自定义本地仓库名,你可以使用如下命令:
    $ git clone https://github.com/libgit2/libgit2 mylibgit

  • 多种数据传输协议
    Git 支持多种数据传输协议:本地协议(Local protocol)http协议git协议ssh协议

    • 本地协议:
      如果你使用一个共享的文件系统,就可以在一个本地文件系统中克隆仓库,推送和获取。克隆的时候只需要将远程仓库的路径作为 URL 使用,比如下面这样:
      $ git clone /opt/git/project.git
      或这样:
      $ git clone file:///opt/git/project.git

    • https协议:
      $ git clone https://github.com/libgit2/libgit2
      优点:
      使用 HTTP 协议的好处是易于架设。几条必要的命令就可以让全世界读取到仓库的内容。花费不过几分钟。HTTP 协议不会占用过多服务器资源。因为它一般只用到静态的 HTTP 服务提供所有数据,普通的 Apache 服务器平均每秒能支撑数千个文件的并发访问 — 哪怕让一个小型服务器超载都很难。
      你也可以通过 HTTPS 提供只读的仓库,这意味着你可以加密传输内容;你甚至可以要求客户端使用特定签名的 SSL 证书。一般情况下,如果到了这一步,使用 SSH 公共密钥可能是更简单的方案;不过也存在一些特殊情况,这时通过 HTTPS 使用带签名的 SSL 证书或者其他基于 HTTP 的只读连接授权方式是更好的解决方案。
      HTTP 还有个额外的好处:HTTP 是一个如此常见的协议,以至于企业级防火墙通常都允许其端口的通信。
      缺点:
      HTTP 协议的消极面在于,相对来说客户端效率更低。克隆或者下载仓库内容可能会花费更多时间,而且 HTTP 传输的体积和网络开销比其他任何一个协议都大。因为它没有按需供应的能力 — 传输过程中没有服务端的动态计算 — 因而 HTTP 协议经常会被称为傻瓜(dumb)协议。

    • git协议:
      $ git clone [email protected]:ios-public/project.git
      这是一个包含在 Git 软件包中的特殊守护进程; 它会监听一个提供类似于 SSH 服务的特定端口(9418),而无需任何授权。打算支持 Git 协议的仓库,需要先创建 git-daemon-export-ok 文件 — 它是协议进程提供仓库服务的必要条件 — 但除此之外该服务没有什么安全措施。要么所有人都能克隆 Git 仓库,要么谁也不能。这也意味着该协议通常不能用来进行推送。你可以允许推送操作;然而由于没有授权机制,一旦允许该操作,网络上任何一个知道项目 URL 的人将都有推送权限。不用说,这是十分罕见的情况。
      优点:
      Git 协议是现存最快的传输协议。如果你在提供一个有很大访问量的公共项目,或者一个不需要对读操作进行授权的庞大项目,架设一个 Git 守护进程来供应仓库是个不错的选择。它使用与 SSH 协议相同的数据传输机制,但省去了加密和授权的开销。
      缺点:
      Git 协议消极的一面是缺少授权机制。用 Git 协议作为访问项目的唯一方法通常是不可取的。一般的做法是,同时提供 SSH 接口,让几个开发者拥有推送(写)权限,其他人通过 git:// 拥有只读权限。 Git 协议可能也是最难架设的协议。
      ``

    • 生成ssh key:

终端:

//进入到.ssh目录下
whp-MacBook-Pro:~ whp$ cd ~/.ssh
whp-MacBook-Pro:.ssh whp$ ls
known_hosts
//生成ssh key(邮箱)
whp-MacBook-Pro:.ssh whp$ ssh-keygen -t rsa -C [email protected]
//回车后(输入密码)
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/whp/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/whp/.ssh/id_rsa.
Your public key has been saved in /Users/whp/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:4MFouvpaN2t9mm0bn0PKInD1mK3nxAx01iCQl5uEdpQ [email protected]
The key's randomart image is:
+---[RSA 3072]----+
|    .=oo.        |
|    +oE. o       |
|   .o+=oo .      |
|   o o+=         |
|  .  .o=S        |
|  ... o+o .      |
|  ooo. o=o       |
| o .oo++*o..     |
|oo....oB+.o.     |
+----[SHA256]-----+
whp-MacBook-Pro:.ssh whp$ ls
id_rsa      id_rsa.pub  known_hosts
whp-MacBook-Pro:.ssh whp$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCuRx60f3VoCufnl96DSZZTRuVZV8ixRji3080gGz5MQA2TD78rUZMYZE/vDanvKO67vGPVa7fZfC17HMCH6EzrS+mSAzTWl3kHrMRkIbzXPbrBPWej5hf6CADdigSf9omQ5Y0RAqEEb2w7+4vSK8OMvoGtX3u9V46J78We2mkXCqxl472+X0eMee6r40kB03aWg0fSVLDc1+0C3vBpQOnCLiaCuonq+PXtDdQFqR5bYPTzZS8Qt/9PwyOTTM60uHt38Vbggw/J939MpwQP6q5NggRR/GOYKu3PtnCltVRidaJVn+QEi66s3O5Iey9j6XxVBlXmvp4cMVlrvmCYZJZc5ToOVsiBki3PyE9gk4Xe9p/c3aHc58mIOSzGHT3lq4liX19YY8IQWPUiYXjgoMh+nWqncPWx0uPKGy0GBbenBFMWtFaHuFnoWDu0DbrNTBYBdfYl1QwUMEUCMsVGMmX2pmJ1skmnPV26v2jlzDjNS9O2588MbbWSMBl4yL8efik= [email protected]
whp-MacBook-Pro:.ssh whp$ 
  • ssh协议:
    $ git clone ssh://user@server/project.git
    优点:
    使用 SSH 的好处有很多。
    首先,如果你想拥有对网络仓库的写权限,基本上不可能不使用 SSH。其次,SSH 架设相对比较简单 — SSH 守护进程很常见,很多网络管理员都有一些使用经验,而且很多操作系统都自带了它或者相关的管理工具。再次,通过 SSH 进行访问是安全的 — 所有数据传输都是加密和授权的。最后,和 Git 及本地协议一样,SSH 也很高效,会在传输之前尽可能压缩数据。
    缺点:
    SSH 的限制在于你不能通过它实现仓库的匿名访问。即使仅为读取数据,人们也必须在能通过 SSH 访问主机的前提下才能访问仓库,这使得 SSH 不利于开源的项目。如果你仅仅在公司网络里使用,SSH 可能是你唯一需要使用的协议。如果想允许对项目的匿名只读访问,那么除了为自己推送而架设 SSH 协议之外,还需要支持其他协议以便他人访问读取。

你可能感兴趣的:(Git---clone(克隆仓库))