前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git基础知识(九)

Git基础知识(九)

作者头像
zx钟
发布2019-07-18 21:54:21
5660
发布2019-07-18 21:54:21
举报
文章被收录于专栏:测试游记

一个远程仓库通常只是一个裸仓库: 一个没有当前工作目录的仓库。

简单的说,裸仓库就是你工程目录内的 .git 子目录内容,不包含其他资料。

协议

  • 本地协议
  • HTTP协议
  • SSH协议
  • Git协议

本地协议

使用本地的一个文件夹当作仓库的时候,将它使用文件共享给其他人。

代码语言:javascript
复制
$ git clone /opt/git/project.git # 本机
$ git clone file:///opt/git/project.git #共享文件

增加一个本地版本到Git项目

代码语言:javascript
复制
$ git remote add local_proj /opt/git/project.git
  • 优点

简单,直接使用了现有的文件权限和网络访问权限。

  • 缺点

不方便从多个位置访问。

并不保护仓库避免意外的损坏,每一个用户都有“远程”目录的完整 shell 权限,没有方法可以 阻止他们修改或删除 Git 内部文件和损坏仓库。

HTTP协议

  • Git 1.6.6之前的HTTP协议是只读模式的,又称为「哑」HTTP协议。
  • Git 1.6.6之后的HTTP协议,又称「智能」HTTP协议。

可以使用 HTTP 协议的用户名/密码的基础 授权,免去设置 SSH 公钥。

相比 SSH 协议,可以使用用户名/密码授权是一个很大的优势,这样用户就不必须在使用 Git 之前先在本地生成 SSH 密钥对再把公钥上传到服务器。

SSH协议

SSH 协议也是一个验证授权的网络协议;

克隆的方法:

代码语言:javascript
复制
# 1
$ git clone ssh://user@server/project.git
# 2
$ git clone user@server:project.git

优点:

  • 通过 SSH 访问是安全的「 所有传输数据都要经过授权和加密。」
  • SSH 协议很高效,在传输前也会尽量压缩数据。

缺点:

  • 不能匿名访问(即使是只读数据)

Git协议

包含在 Git 里的一个特殊的守护进程。

它监听在一个特定的端口「9418」。

要让版本库支持 Git 协议,需要先创建一个 git-daemon-export-ok 文 件 :它是 Git 协议守护进程为这个版本库提供服务的必要条件 「但是除此之外没有任何安全措施」。 要么谁都可以克隆这个版本库,要么谁也不能。 由于没有授权机制,一旦开放推送操作,意味着网络上知道这个项目 URL 的人都可以向项目推送数据。

优点:最快

缺点:缺乏授权机制

搭建Git仓库

导出裸仓库

我们需要导出一个「不包含当前工作目录的仓库」

代码语言:javascript
复制
$ git clone --bare Git_study Git_study.git

导出裸仓库

把仓库放到服务器上

假设使用我的阿里云设备来当服务器

我在/home/zx路径下新建一个文件夹git_study

存放路径:/home/zx/git_study

代码语言:javascript
复制
$ scp -r Git_study.git zx@123.56.13.233://home/zx/git_study

上传至服务器

下面看一下阿里云上的内容

服务器侧

克隆内容

代码语言:javascript
复制
$ git clone zx@123.56.13.233:/home/zx/git_study/Git_study.git

普通克隆

也可以将这个仓库进行修改,使其拥有推送权限

运行 git init 命令,并加上 --shared 选项,那么 Git 会自动修改该仓库目录的组权限 为可写。

代码语言:javascript
复制
$ ssh zx@123.56.13.233
$ cd /home/zx/git_study/Git_study.git
$ git init --bare --shared
# Reinitialized existing shared Git repository in /home/zx/git_study/Git_study.git/

增加权限

由于我大部分时间都是使用的HTTP来进行Git操作,所以SSH相关内容就不画蛇添足了。

有很多优秀的代码托管平台可以选择:https://git.wiki.kernel.org/index.php/GitHosting

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 协议
    • 本地协议
      • HTTP协议
        • SSH协议
          • Git协议
          • 搭建Git仓库
            • 导出裸仓库
              • 把仓库放到服务器上
                • 克隆内容
                相关产品与服务
                代码托管
                CODING 代码托管(CODING Code Repositories,CODING-CR)是为开发者打造的云端便捷代码管理工具,旨在为更多的开发者带去便捷、高效的开发体验,全面支持 Git/SVN 代码托管,包括代码评审、分支管理、超大仓库等功能。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档