Git、TortoiseGit、GitHub、Gitee、GitLab 安装与入门使用

  • Git、TortoiseGit、GitHub、Gitee、GitLab 简介
    • Git
    • TortoiseGit
    • GitHub
    • Gitee
    • GitLab
  • Git 进行通信的原理简介
    • 非对称加密
    • Git 的通信方式
  • 实战
    • Git 的下载与配置
      • Git 的下载与安装
      • 创建一个 Git 项目
      • 生成密钥对
    • TortoiseGit 的下载与配置
      • TortoiseGit 的下载与安装
      • 生成密钥对
    • GitHub 的使用
      • 注册账号
      • 绑定公钥
      • 创建 GitHub 代码仓库
      • 下载 GitHub 代码
      • 上传文件至 GitHub
    • Gitee 的使用
      • 注册账号
      • 绑定公钥
      • 创建 Gitee 代码仓库
      • 下载 Gitee 代码
      • 上传文件至 Gitee
    • GitLab 的使用
      • GitLab 下载与安装
  • 总结与补充

  很多人刚开始接触到标题的这些个名词时并不是自愿的,毕竟为什么要费力了解自己看来完全不需要的东西。但是很遗憾,这还是企业开发的入门技术,个人进行较大型的开发时使用它们也很有意义。本文简介它们的入门知识,但它们所包含的内容还不止如此,读者还需要在使用时边学习边积累。

Git、TortoiseGit、GitHub、Gitee、GitLab 简介

Git

  Git 是什么?在回答这个问题之前,需要知道没有它会有哪些问题。我们习惯使用操作系统自带的文件系统来管理文件,通常,这已经能满足我们的大多数需求了。不过,考虑一个更复杂但实际的问题。如果我们对一个文件进行了多次的修改、替换、删除,然后某天我们后悔了,想找回之间的那个文件该怎么办呢?显然,这不是简单通过一个操作系统中的回收站就可以解决的——它最多只能解决删除的问题。Git 可以解决这个问题。它会将用户对本目录下所有的文件(夹)的改动都保存在本目录下的隐藏文件夹 .git 中。在不违反逻辑的情况下,用户可以自由切换到任何一个历史的状态。

  对于多人合作开发,Git 能带来极大的便利。相对于 SVN,它不需要时时刻刻联网,这又是它的一大优势。不过要注意,Git 适合用于对文本类型文件的版本管理,比方说代码源文件。文本类型文件往往体积小,且可直接阅读解析。如果是一种大型二进制文件,使用 Git 并不会有想象中的便利。

TortoiseGit

  虽然 Git 已经实现了版本控制,不过能否实现与使用起来是否方便没有必然性。如果只使用 Git,读者将会在感受命令行无所不能之后将 Git 卸载。毕竟,没有人愿意在没有观众的情况下,将任何操作都通过输入命令来实现。之所以会这样,大概是因为 Git 的发明者与 Linux 的是同一个人。TortoiseGit 提供了 UI 界面在很大程度上解决了这个问题。对于常用的 Git 操作,只需要通过 TortoiseGit 提供的右键菜单和 UI 界面即可完成。不过,对于较复杂的 Git 操作,仍然需要通过在命令行输入命令来完成。

GitHub

  Git 只是提供了版本控制的功能,但很多时候我们还需要将文件备份、在网络上分享。GitHub 提供了储存用户上传的文件的功能。在本质上,它只支持通过 Git 来上传文件。应该说,它只是一种 Git 远程仓库,而 Git 只是一种文件管理传输工具。如果可以承受一定的成本,也可以选择自行构建一个自己的 Git 远程仓库来备份自己的重要文件,而 GitHub 只是一个全球公共的 Git 远程仓库。

  不过,前面提到过,Git 只是适合用于对文本类型文件的版本管理。因此,依赖 Git 的 GitHub 与普通理解中的云盘是有很大区别的。GitHub 并不适合备份自己的任何类型的文件,这不仅仅是限于网速与安全性。如果想要使用 GitHub 进行备份,要想想要备份的文件,它的历史版本是否重要。

Gitee

  GitHub 的一个很大的弊端就是,它需要互联网,但它不是国人发明的。这意味着会有网络的问题。实际上,这个问题很大。不管是不是高峰期,对于国内的普通网络,五次能有一次可以打开 GitHub 主页已经不错了。Gitee 就是一种 GitHub 的“国内版本”,它又叫码云。使用 Gitee 基本不会有网络的问题,而且它还支持导入 GitHub 中的项目。这意味着,如果直接下载某个 GitHub 项目很慢,可以选择先在 Gitee 中将其导入,然后直接在 Gitee 中下载。

GitLab

  GitLab 与前面的 GitHub、Gitee 很相似,不过它可以作为一个私有的 Git 远程仓库。可以使用 GitLab 作为平台来在个人服务器上搭建一个 Git 远程服务器,这样在将本地 Git 项目推送到远端时,可以不借助互联网,只需要局域网,就储存在自己的私人存储空间中。这对企业开发是很有利的,毕竟将自己企业的数据上传至非私有的服务器有很大的安全隐患。

  GitLab 服务器在搭建完成之后,还可以像 GitHub、Gitee 一样在网页端对其进行访问。支持像 GitHub、Gitee 一样注册账号和管理这些账号。另外,它还支持 CI、CD 功能。

  对于 GitLab 的基础功能,使用 GitLab 是免费的,如果需要更多的功能,这需要按功能强大程序支付相应的费用。另外,GitLab 只能直接部署在指定的 Linux 上,对部署的 Linux 的硬件性能也有一定的要求。

Git 进行通信的原理简介

非对称加密

  信息在互联网上传输是要加密的,这个加密是强制的,不能选择让自己自愿承担风险而主动放弃加密。这就好比现在不能自愿承担被盗号风险而拒绝登记手机号一样。

  这里来讲讲非对称加密。出于本文的重点,这里不作深入探究,也不讲解其它的加密方式,这是密码学的内容。非对称加密是通过公钥与私钥来进行加密与解密的,其中,公钥与私钥的内容是不同的,因此称为非对称加密。具体来说,对于一次信息传输,发送方会先将此信息使用接收方公钥进行加密,然后发送给接收方,接收方会使用接收方私钥进行解密,从而保证传输时信息的安全。

  那么,发送方如何才能获得接收方的公钥呢?说明这个问题之前,先要说明的是,公钥与私钥的区别不仅在于,公钥是用加密的,私钥是用于解密的。实际上,公钥对外公开的,而私钥只有接收方才知道。在这个信息传输过程中,接收方的公钥与私钥都是接收方自己使用一定的算法生成的。在一开始,只有接收方知道自己的公钥与私钥,然后接收方将自己的公钥首先以明文的方式传给发送方,之后发送方才会向接收方传输信息。因为公钥只能用于加密,所以不怕别人知道。比方说,如果第三者通过监听等手段窃取了传输过程中接收方的公钥和发送方的密文,但他没有接收方的私钥,所以他拥有密文,他也不知道实际内容是什么。

Git 的通信方式

  前面讲过,GitHub、Gitee 都是使用 Git 进行文件传输的代码托管平台,而支持很多种通信协议,如 HTTPS、SSH 等。这里重点讲解通过 SSH 方式的传输。

  如果使用 HTTPS 进行传输,则密钥的生成是由软件自动完成的。实际上这个过程较为复杂,不过它对用户透明,所以不需要了解其中的内部机制。通常,这和普通的网页下载方式没有区别,通信效率会受到网络的影响。

  如果使用 SSH 进行传输,通信效率往往高于 HTTPS,不过需要额外进行一些手动配置。SSH 通信时使用非对称加密。在使用该协议之前,需要先手动生成自己的密钥对,然后将自己的公钥上传给远端代码托管平台,最后在传输前指定自己的私钥才能进行传输。自己生成的私钥是与当时同时生成的公钥是配对的,因此私钥必须妥善保存。如果之后不小心删除了本地的私钥,则需要再生成一对密钥并将公钥上传。

实战

  前面已经给出它们的简介。现在开始介绍它们的入门实战使用。

Git 的下载与配置

Git 的下载与安装

  1. 打开 Git 官网下载 Git。Git 的下载链接其实源自 GitHub。前面提到过,对于国内普通的网络,此过程会很缓慢。

    Git 的官网下载地址:https://git-scm.com/download/win

    另外,Git 在 GitHub 上的开源地址是:https://github.com/git-for-windows/git/

  2. Git 的安装较为傻瓜,正如它的名称一样。对于新手来说,在下载完 Git 安装包之后,安装时除了注意安装路径之外,一直 next 即可。

  3. 在正常安装完 Git 之后,右键菜单应该会有关于 Git 的菜单项。点击 Git Bash Here 即可进入 Git 的命令行界面:

创建一个 Git 项目

  1. 在命令行下输入命令即可创建一个 Git 项目(代码仓库):

    git init

生成密钥对

  1. 如果很喜欢使用 Git 命令行进行与远程代码平台的交互,则需要使用 Git 生成的密钥对。生成密钥的方法是,先设置 用户名邮箱

    git config --global user.name "用户名"
    git config --global user.email "邮箱"

    其中,上面的 用户名邮箱 要改为自己需要设置的相应值。

  2. 输入以下生成密钥对。然后一直按 ENTER 即可:

    ssh-keygen -t rsa -C "邮箱"

    其中,上面的 邮箱 要改为自己需要设置的相应值。

  3. 可见,上面的命令生成了密钥对,并将其保存在了文件夹 C:\Users\Windows 用户名\.ssh 中。打开该文件夹,可以看到两个文件:id_rsaid_rsa.pub。第一个文件是私钥,第二个文件是公钥。这两个文件其实都是文本文件,都可以文本方式打开。前面说过,公钥需要提供给远程平台,因此需要复制其中的内容。这里,需要复制的公钥的内容为全文。

    再次提醒:私钥需要妥善保存。如果没有私钥,前面上传至远程平台的公钥等于作废。

TortoiseGit 的下载与配置

TortoiseGit 的下载与安装

  1. 必须先安装 Git 之后才能安装 TortoiseGit。

  2. 打开 TortoiseGit 的官网下载 TortoiseGit,网址:https://tortoisegit.org/download/

    TortoiseGit 还提供了官方汉化包。通常,进行汉化可以减少语言的障碍,不过,此处却建议不要使用汉化包。并不是为了本末倒置地锻炼自己的英语,而是 TortoiseGit 中的有很多菜单选项对应着 Git 中的命令,而命令属于一种专有名词,它不应该被翻译。在 TortoiseGit 中使用汉化会对 Git 的学习带来干扰,所以建议不要使用汉化。

  3. TortoiseGit 的安装比 Git 还要傻瓜,此处不作介绍。如果同时下载了汉化包,则汉化包需要在TortoiseGit 的安装包安装之后才能进行安装。在安装完 TortoiseGit 之后,右键菜单应该有了关于 TortoiseGit 的菜单项。进入 Settings 之后,应该能看到关于 Git 的安装信息。

生成密钥对

  1. 在开始菜单中找到 TortoiseGit 的一个程序 PuTTYgen,并运行。

  2. 点击 Generate 生成密钥对。注意,需要在生成过程中不断点击图中空白,以防止程序卡死。

  3. 生成成功之后,显示出来的就是公钥了。与前面在 Git 中一样,需要全文复制这个公钥,以及保存自己的私钥。

    再次提醒:私钥需要妥善保存。如果没有私钥,前面上传至远程平台的公钥等于作废。

  4. 和 Git 一样,需要填写 用户名邮箱 信息。

GitHub 的使用

注册账号

  1. 注册一个 GitHub 账号。GitHub 的官网是:https://github.com/

绑定公钥

  1. 前面提到过,GitHub 需要绑定公钥用于文件传输。方法如下:

  2. 在此处,需要粘贴前面生成的公钥全文。注意,公钥需要以 ssh-rsa 等作开头。

创建 GitHub 代码仓库

  1. 只有先创建一个 GitHub 仓库之后才能向 GitHub 上传代码。方法如下:

下载 GitHub 代码

  1. 下载 GitHub 仓库代码可以使用很多方式,前面已经提到过,如 HTTPS、SSH 等,一般选择 SSH。因为前面已经上传过公钥,所以此处可以使用 SSH 来下载。如果没有绑定公钥,则只能使用 HTTPS 的方式,一般来说,对于国内网络的 GitHub,下载起来会非常慢。如果选择 SSH 的方式,则需要先复制此项目的 SSH 地址。

  2. 然后可以选择 Git 或 TortoiseGit 来下载,这里选择 TortoiseGit。下载 GitHub 代码仓库的本质是使用的 Git 的 git clone 命令。下载的时候需要指定自己前面生成的私钥。

  3. 下载成功的标志是显示 Success 字样。

上传文件至 GitHub

  1. 如果对 Git 仓库的文件进行了改动,则在资源管理器中会有红色角标标识。此标识代表此改动还没有使用 Git 来保存。

  2. 可以使用 git addgit commit 命令将此改动提交至本地 Git 记录中。如果使用 TortoiseGit,这个操作可以变得没有技术障碍。

  3. 如果想将本次改动更新至 GitHub 中,则需要使用 git push 命令。push 时也需要借助自己的私钥,通常,这需要事先在本地 Git 项目中事先指定。如果这个项目源自前面从远程仓库的 clone,则这个私钥将默认设为前面 clone 时的私钥。

    psuh 有很多方法,在 TortoiseGit 中,这可以接着上面的 git commit 之后来完成。

  1. 现在,如果刷新 GitHub 中相应的代码仓页面,应该可以看到刚才的改动。

Gitee 的使用

注册账号

  1. Gitee 的使用与 GitHub 基本类似,而且 Gitee 还是全中文的界面,可以说是无障碍了。首先,也是需要注册一个 Gitee 账号。Gitee 的官网是:https://gitee.com/

绑定公钥

  1. 与 GitHub 一样,这也需要上传公钥。

创建 Gitee 代码仓库

  1. 这个非常简单,与 GitHub 也是类似的,从略。

下载 Gitee 代码

  1. 与 GitHub 类似的,需要先获得该代码仓的 SSH 地址。

  2. 复制之后的操作与前面在 GitHub 中是完全一样的。这里从略。

上传文件至 Gitee

  1. 此部分与前面在 GitHub 中也是完全一样的,这里从略。这是因为 Gitee 和 GitHub 一样,只是一个远程代码仓库而已。

GitLab 的使用

GitLab 下载与安装

  • 关于这方面的内容,可见笔者的另一篇博客:

    Linux 下 GitLab 安装教程:
    https://blog.csdn.net/wangpaiblog/article/details/122264366

总结与补充

  • 关于 Git,还有很多概念与操作,如 branch、clone、fork。限于篇幅,此处不作详解,有兴趣的读者可见笔者的另一篇博客:

    fork 与 branch、clone 的区别:
    https://blog.csdn.net/wangpaiblog/article/details/115879464

Git、TortoiseGit、GitHub、Gitee、GitLab 安装与入门使用相关推荐

  1. SVN Git GitHub Gitee GitLab区别

    目前的最常用的版本控制中心有两种:SVN和Git: SVN和Git都只是一个命令行工具,用于代码的存储和版本控制 版本控制中心 仓库区(Repository) SVN 集中式版本控制系统 中央服务器( ...

  2. 【Git-2022总结】分布式代码版本控制工具【GitHub/Gitee/GitLab】

    [Git]分布式代码版本控制工具[GitHub/Gitee/GitLab] 一.Git介绍 1.1 Git工作机制 1.2 代码托管中心 1.3 详细git的常用命令 **签名的作用**: **当从暂 ...

  3. Git、GitHub、GitLab三者之间的联系以及区别

    Git.GitHub.GitLab三者之间的联系以及区别 在讲区别以及联系之前先简要的介绍一下,这三者都是什么(本篇文章适合刚入门的新手,大佬请出门左转) 1.什么是 Git? Git 是一个版本控制 ...

  4. 【Git、GitHub、GitLab】二 Git基本命令之建立Git仓库

    上一篇文章学习了Git的安装与最小配置:[Git.GitHub.GitLab]一 Git安装与Git最小配置 文章目录 建立Git仓库 建立Git仓库 有两种方式可以建立Git仓库: 用Git之前已经 ...

  5. Git,GitHub与GitLab的区别

    文章目录 Git GitHub GitLab Git,GitHub与GitLab的区别 Git Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本 ...

  6. Linux中级实战部署一:企业级 CICD 持续集成交付发布---(git,github,gitlab)

    企业级 CI/CD 持续集成/交付/发布 一:git,github,gitlab的区别 Git是版本控制系统:Github是在线的基于Git的代码托管服务,GitHub同时提供付费账户和免费账户:Gi ...

  7. 【Git、GitHub、GitLab】十 将git仓库备份到本地

    上一篇文章学习记录了工作中常用的一些git命令,点击链接查看:[Git.GitHub.GitLab]九 工作中非常重要的一些git用法 文章目录 1 git的传输协议 2 如何将git仓库备份到本地 ...

  8. 【Git、GitHub、GitLab】九 工作中非常重要的一些git用法

    上一篇文章学习了 如何修改commit的message,点击链接查看:[Git.GitHub.GitLab]八 如何修改commit的message 注意:下面的'–' 都是两个'-'组成 本文介绍一 ...

  9. 【Git、GitHub、GitLab】七 git中分支的删除以及出现分离头指针的情况

    上一篇文章学习了GIT中commit.tree和blob三个对象之间的关系,点击链接查看:[Git.GitHub.GitLab]六 GIT中commit.tree和blob三个对象之间的关系 文章目录 ...

最新文章

  1. 在PaddlePaddle中的Notebook代码片段
  2. 小型的ESP8266-01s WiFi串口模块是否可以下载MicroPython?
  3. oracle性能优化总结
  4. SSM中进行注解式和XML配置式事务管理
  5. offsetLeft 解析
  6. SQL查询重复记录方法大全 转
  7. 面试官:聊一下你对MySQL索引实现原理?
  8. 方舟编译器的安装和编译Helloword
  9. pytorch根据特征图训练LSTM Stacked AutoEncoder
  10. C++安全方向(二):2.3 base64编码原理讲解
  11. Tom邮箱注册机|注册辅助工具!!!
  12. java填吧_请高手为我填上JAVA代码吧
  13. Java高级程序员面试大纲——备战金三银四跳槽季
  14. python添加模块方法_Python 添加模块
  15. dsp gpip操作 data set 和clc
  16. CS客户端单元测试(1) 开始
  17. 纪中训练5月23日提高组T1
  18. 趣图:程序员的鄙视链/图
  19. 前端面试题总结以及vue在工作中常见的错误
  20. 最全最走心:模电-模拟电子技术 复试/面试知识点大总结 (已更完)

热门文章

  1. 【Spring学习】spring定时任务的实现方式
  2. I/O流(四)—java如何添加到文件尾
  3. Bootstrap3基础 input-group-btn 按钮与输入框 横向组合
  4. Python零基础学习笔记(十三)—— if 和 if-else语句...
  5. UIView的属性使用
  6. linux ssh基本
  7. 【Android】手机端的投射
  8. (三)线程同步工具集_2---控制并发访问资源的多个副本
  9. Spring Cron Expression
  10. jdk动态代理与cglib动态代理例子