文章首发于【博客园-陈树义】,点击跳转到原文《高效开发技巧:为什么你下载Git项目这么慢?》

笔者所在公司采用的是 GitLab 进行版本管理,但许多同事下载 Git 项目的路径是这样的:

打开浏览器 -> 输入网址 -> 查找项目地址 -> 复制项目地址 -> 切换到命令行 -> 输入账号密码 -> 下载

这样每次去下载一个 Git 项目时,我们都要做一些重复性的动作,很浪费时间。但实际上,我们只需要进行一些简单的配置,只需要短短 5 分钟,就可以将上面的路径缩短成这样:

自动列出所有项目地址 -> 选择项目 -> 下载

这样可就大大减少了我们的重复劳动,提高了我们的效率。

熟悉 Git 的朋友应该猜出来了,第一种方式就是:HTTPS 协议下载,第二种方式就是:SSH 协议下载 + Hosting Provider。

下面我们就来讲讲如何使用 SSH 协议下载以及如何配置 Hosting Provider。

通过 SSH 协议下载项目,首先需要在本机生成公钥

先查看系统用户目录下是否有 .ssh 文件夹,如果有的话,那说明你之前已经生成过公钥,则可以跳过生成公钥。运行下面的命令生成一个密钥:

ssh-keygen -t rsa -C "your_email"

运行后会提示输入密钥存储地址以及两次密码,这里我们都直接用 Enter 键跳过即可。接着运行下面的命令查看生成的公钥:

cat ~/.ssh/id_rsa.pub

如果你的 GitLab 不是用默认的 22 端口,那么你还需要在 .ssh 目录下建立一个 config 文件,并写入如下内容:

Host gitlab.xxxx.com
HostName gitlab.xxxx.com
Port 16333
PubkeyAuthentication yes
IdentityFile ~/.ssh/id_rsa

其中 Host 和 HostName 就是你所连接的 GitLab 地址。

生成公钥后,我们就需要登录 GitLab 站点,往我们的账号中添加秘钥了。点击 Settings -> SSH Keys 菜单,把刚刚的公钥添加进去。

之后选择任何一个项目,复制其ssh的项目地址,第一次时会提示是否接受服务器的密钥,选择是就可以了。正常情况下,都可以顺利下载。

配置了 SSH Key 之后,我们下载项目的时候就可以直接下载项目,不需要输入帐号和密码。但我们寻找项目的时候还需要登录 GitLab 去找项目的ssh地址,这个步骤显得有点繁琐。

其实我们通过 SmartGit 的 Hosting Provider 功能就可以直接查看所有项目,需要下载某个项目直接点击就可以下载了。

提示:SmartGit 是一款 Git 版本管理可视化工具,可以点击这里[下载](Download Git Client SmartGit)。

配置 Hosting Provider 功能,点击 Repository 菜单的 clone 选项,在窗口选择Add Providing Hosts。

在弹出的窗口填入相关信息,点击添加即可。

其实 Access Token 信息可以在 GitLab 的 Account 菜单中获取到。

配置完成后,下次 clone 项目的时候就可以看到对应的 Providing Hosts 选项。

选择对应的 Providing Hosts 选项,就可以看到所有的项目列表啦。

文章首发于【博客园-陈树义】,点击跳转到原文[《高效开发技巧:SSH秘钥快速下载Git项目》(http://www.cnblogs.com/chanshuyi/p/quick_download_git_project.html)。

高效开发技巧:为什么你下载Git项目这么慢?的更多相关文章

  1. 使用Eclipse上传/下载Git项目

    使用Eclipse上传/下载Git项目 前提: Eclipse已安装EGit插件 已拥有GitLab / GitHub / 其它Git托管服务账号 SSH方式 配置 配置Git信息 配置用户信息 Ec ...

  2. 使用SSH快速下载Git项目

    文章首发于[博客园-陈树义],点击跳转到原文使用SSH快速下载Git项目. Git下载项目的几种方式 Git是常用的代码版本技术,而GitLab则是开源的Git版本管理软件,GitLab是最受欢迎的版 ...

  3. 多人开发的git项目如何保持提交日志为一条直线?

    多人开发的git项目如何保持提交日志为一条直线? 一.Git的项目的git常用操作 a)Git clone 项目地址 从远程仓库克隆项目到本地 b)Git pull 从当前分支拉取更新代码 c)Git ...

  4. AngularJS进阶(三十六)AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记)

    AngularJS项目开发技巧之利用Service&Promise&Resolve解决图片预加载问题(后记) 前言 在"AngularJS项目开发技巧之图片预加载" ...

  5. AngularJS进阶(三十)AngularJS项目开发技巧之图片预加载

    AngularJS项目开发技巧之图片预加载 绪 项目(移动端采用Ionic 框架)开发完毕,测试阶段发现移动APP首页的广告图片(图片由服务器端返回相应url地址)很难加载,主要原因还是网速.如下图左 ...

  6. Git项目协同开发学习笔记2:项目库开发协作相关命令

    之前介绍了如何用git构建项目库及其后续操作的问题,但主要还是个人的操作问题,不太涉及到项目协作方面的问题,所以来说下这块.传送门在这里(后面的可以不用看了). 1.同步 首先就式同步问题:在项目协作 ...

  7. 微信小程序入门与实战 常用组件API开发技巧项目实战*全

    第1章 什么是微信小程序? 第2章 小程序环境搭建与开发工具介绍 第3章 从一个简单的“欢迎“页面开始小程序之旅 第4章 第二个页面:新闻阅读列表 第5章 小程序的模板化与模块化 第6章 构建新闻详情 ...

  8. 【开发工具】-- IDEA集成Git在实际项目中的运用

    1.企业实际项目中Git的使用 在实际的企业项目开发中,我们一般Java的项目在公司都有自己的局域网代码仓库,仓库上存放着很多的项目.以我工作过的公司如华为的项目,一般是存放在企业内部的CodeHub ...

  9. git下载自己项目到本地

    git下载自己项目到本地 假如外出工作,需要在另一台电脑上面pull自己的某个git远程项目到本地 $ git init $ git pull https://github.com/TTyb/54qj ...

随机推荐

  1. 对于是否在一个python程序中编写函数的启发

    那我们到底是应该直接使用这些模块级别的函数呢,还是先编译一个模式对象,再调用模式对象的方法呢?这其实取决于正则表达式的使用频率,如果说我们这个程序只是偶尔使用到正则表达式,那么全局函数是比较方便的:如 ...

  2. springboot学习笔记-4 整合Druid数据源和使用@Cache简化redis配置

    一.整合Druid数据源 Druid是一个关系型数据库连接池,是阿里巴巴的一个开源项目,Druid在监控,可扩展性,稳定性和性能方面具有比较明显的优势.通过Druid提供的监控功能,可以实时观察数据库 ...

  3. WebApi的多版本管理

    1.多版本管理概念 什么是API的多版本问题?Android等App存在着多版本客户端共存的问题:由于早期没有内置升级机制,用户不会升级,拒绝升级等原因,造成了许多软件的旧版本App也在运行.开发新版 ...

  4. 1. 生成三行文本,过滤文本,cp不覆盖,find查找文件,sed打印行,查看系统信息,磁盘分区

  5. 在jQuery中使用canvas时遇到的问题

    正常的情况下一般在JavaScript中使用canvas,会用到如下代码: var canvas=document.getElementById("canvas"); var co ...

  6. iOS OC应用异常捕获,崩溃退出前返回信息给后台

    第三方的了,有友盟,腾讯的bugly 查了一下网上类似的代码很多,在借鉴前辈的代码后,组合了一下: 1.捕获异常信息 2.获得当前日期,版本,系统 3.获得出bug的视图控制器转为字符串 4.将前3条 ...

  7. HTML篇(下·)

    13.Label的作用是什么?是怎么用的? label标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单事件上. <label for="Name& ...

  8. bzoj 1179: [Apio2009]Atm

    Description Input 第 一行包含两个整数N.M.N表示路口的个数,M表示道路条数.接下来M行,每行两个整数,这两个整数都在1到N之间,第i+1行的两个整数表示第i条道路 的起点和终点的 ...

  9. Elastic 技术栈之 Filebeat

    Elastic 技术栈之 Filebeat 简介 Beats 是安装在服务器上的数据中转代理. Beats 可以将数据直接传输到 Elasticsearch 或传输到 Logstash . Beats ...

  10. template package (godoc 翻译)

    template 包 概述(Overview) template 包实现了数据驱动模板用于生成文本输出. 要生成HTML输出,请参阅html/template包,它具有与此包相同的接口,但会自动保护H ...