Git远程仓库

三、远程仓库

分布式版本管理系统,可以是在多台主机上共同管理同一个版本库,而且各台主机上的版本库都是一致的,没有主次之分。

在实际工作中,往往使用一台服务器充当版本库的载体,这台服务器24小时开机,其他用户从服务器的版本库克隆一份到自己的电脑上,并且将各自的提交推送到服务器仓库中,也从仓库中拉去别人的提交。但自己搭建Git的服务器也不是很方便,也没有必要。我们往往使用一些第三方机构提供的Git仓库托管服务,例如Github、Gitee,(相当于使用别人的Git服务器),在下面的测试中,均使用国产的码云托管平台-Gitee。

首先一个问题,本地仓库如何与远程仓库进行数据的传输呢?答案是SSH协议。

3.0 SSH

3.0.1 SSH简介

SSH(Secure Shell的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。在实际使用中,它主要用于保证远程登录和远程通信的安全,任何网络服务都可以用这个协议来加密。

SSH起源于1995芬兰赫尔辛基工业大学的研究员Tatu Ylönen 设计的SSH协议的第一个版本(SSH 1)

芬兰赫尔辛基真是个好地方,前有Linux Torvalds,后有Tatu Ylönen,不过两人对于产品开源的态度是截然相反的。

1995年12月,由于客服需求越来越大,Tatu Ylönen 就成立了一家公司 SCS,专门销售和开发 SSH。这个软件的后续版本,逐渐从免费软件变成了专有的商业软件。

现在绝大多数人使用的均是OpenBSD的开发人员在1999年启动的OpenSSH项目。目前,Linux的所有发行版几乎都自带OpenSSH。

SSH采用非对称加密的方式,即用户需要在本地主机上通过加密算法生成一组密钥对,分为公钥(public key)和私钥(private key)。其中私钥保存在自己的主机上,不能泄露(除非你想让别人拥有访问权限),公钥则是放在服务器上,可以公开,公钥和私钥是一一对应的。

如果数据使用公钥进行加密,则只有使用对应的私钥才能解密;若使用私钥进行加密,则只有使用对应的公钥进行解密,后一过程称为”签名“

SSH 密钥登录分为以下的步骤。

预备步骤,客户端通过ssh-keygen生成自己的公钥和私钥。

第一步,手动将客户端的公钥放入远程服务器的指定位置。

第二步,客户端向服务器发起 SSH 登录的请求。

第三步,服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。

第四步,客户端收到服务器发来的数据,使用私钥对数据进行签名,然后再发还给服务器。

第五步,服务器收到客户端发来的加密签名后,使用对应的公钥解密,然后跟原始数据比较。如果一致,就允许用户登录。

3.0.2 Gitee配置SSH用户账户公钥

首先明确一个概念,Gitee上的Key分为仓库的SSH Key和账户的SSH Key。Gitee上的解释是这样的。

和仓库"只读"权限的 SSH Key 相比,账户的 SSH Key 同时具备推送/拉取的权限,对用户创建/参与的仓库均能使用,使用起来更加方便。

仓库的 sshkey 只针对仓库,且我们仅对仓库提供了部署公钥,即仓库下的公钥仅能拉取仓库,这通常用于生产服务器拉取仓库的代码。
而用户的 key 则是针对用户的,用户添加了 key 就对用户名下的仓库和用户参加了的仓库具有权限,一般而言,用户的key具有推送和拉取的权限,而仓库的 key 则只具有拉取权限。

下面介绍具体的方法:

  1. 在本机git命令行中使用ssh-keygen -t ed25519 -C "xxxx@xx.com",后面替换为自己的邮箱。

    (1)-t

    -t参数用于指定生成密钥的加密算法,一般dsarsa

    (2)-C:

    -C参数可以为密钥文件指定新的注释,推荐格式为username@host

    这里我采用的加密算法是Gitee官方文档中示例的ed25519,在输入命令后,系统会要你确认三处,第一是密钥保存地址;第二是设置密钥的保护密码(passphrase),即使入侵者拿到秘钥,依然要输入保护密码才能使用;第三是确认保护密码。

    sshkeygen.png

  2. 上传公钥

ssh push.png

当然,你可以上传多个公钥,这样就可以在不同设备上使用同

3.1 添加远程库

第一种情况:本地已有仓库,想要将本地仓库推送到远程仓库然后多人协作。

3.1.1 Gitee新建仓库

create git repository.png

在码云的创建仓库界面中,首先输入仓库名称(中英文均可,但推荐中文),随后路径一栏会自动匹配你的仓库名;仓库介绍非必填;开源和私有根据个人要求设置,开源的话所有人都可以看见,如果是公司内部项目可以不开源(私有项目有5人成员上限,更多人需要花钱)。

3.1.2 本地仓库关联远程Gitee仓库
git remote add origin git@gitee.com:time_and_space_ferry/learngit.git
git push -u origin master

这里add origin后的地址是由Gitee默认生成提供的,在创建仓库后的界面就展示了,我们只需复制粘贴即可。origin指的是远程仓库的名称,origin为默认习惯命名。

git push -u使用后,可以在后续推送/拉取相同主机的相同分支时直接使用git push/git pull。关与-u参数的参考资料

默认情况下,添加远程仓库不返回信息,推送返回信息如下

git push origin master.png

推送后,Gitee上的远程仓库已经更新。

3.1.3 从远程仓库克隆

更常见的开发模式是,先在第三方托管平台创建一个仓库,其他协作开发人员克隆远程仓库到本地。

gitee clone.png

从已有远程仓库克隆到本地有多种方式,最常用的还是通过SSH协议的克隆,推荐使用SSH的方式。

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https

git clone git@gitee.com:xxxx/xxx.git

参考文章:

[ssh-tutorial](https://gitee.com/mirrors_trending/ssh-tutorial/blob/main/docs/key.md)

廖雪峰的Git

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git 是一种分布式版本控制系统,可以用来管理代码的版本和协作开发。要使用 Git 远程仓库,需要按照以下步骤: 1. 创建远程仓库:可以选择使用 Git 托管网站(如 Github、Gitlab、Bitbucket 等)创建远程仓库,也可以在自己的服务器上创建。 2. 在本地电脑上安装 Git:如果还没有安装 Git,需要先下载并安装 Git。 3. 在本地电脑上设置 Git:首先需要设置用户名和邮箱,以便在提交代码时记录提交者的信息。可以使用以下命令设置: ``` git config --global user.name "Your Name" git config --global user.email "your_email@example.com" ``` 4. 在本地电脑上创建本地仓库:可以使用以下命令在本地电脑上创建一个 Git 仓库: ``` mkdir myproject cd myproject git init ``` 5. 将本地仓库远程仓库关联:使用以下命令将本地仓库远程仓库关联,其中 `remote_name` 是远程仓库的名称(可以自己定义),`remote_url` 是远程仓库的地址。 ``` git remote add remote_name remote_url ``` 6. 将本地代码推送到远程仓库:使用以下命令将本地代码推送到远程仓库。 ``` git push remote_name master ``` 7. 其他常用命令: - `git pull`:从远程仓库拉取代码到本地仓库。 - `git fetch`:从远程仓库拉取最新代码,但不会合并到本地仓库。 - `git branch`:查看本地分支。 - `git checkout`:切换分支。 - `git merge`:合并分支。 - `git clone`:从远程仓库克隆代码到本地电脑。 以上就是使用 Git 远程仓库的基本步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值