版本工具Git 第二篇: 远程仓库的的常用操作以及配置SSH

本文详细介绍了如何使用Git进行远程仓库的操作,包括添加远程仓库别名、推送本地分支、克隆仓库、解决冲突以及通过SSH配置进行安全连接。重点讲解了在push时遇到的同步问题及解决方案,如使用`git pull`进行合并,并讨论了SSH与HTTPS两种地址的区别。此外,还提及了远程仓库的删除与重命名,以及如何通过`git fork`进行协作。
摘要由CSDN通过智能技术生成

在国内所以用gitee进行操作,还有一个可以配置密钥,这个后面聊,现在聊一如何操作远程仓库。需要了解Git基础的可以看另一篇:传送阵

常用命令:

命令描述
git remote -v查看配置的远程仓库
git remote add 别名 远程地址因为远程地址不好记也不方便输入所以用一个别名。这个是添加远程仓库以及起一个别名
git push 别名 本地分支将本地分支上的内容推送到远程仓库
git clone 远程地址将远程仓库的数据克隆到本地
git pull 远程地址命令 远程分支将远程仓库对于分支最新的内容拉下来后于当前本地分支直接合并
git remote rename 别名 新别名远程仓库的重命名
git remote remove 仓库别名 | git remote rm 仓库别名要移除一个远程仓库
git clone 仓库名克隆一个仓库

前提:

  • 申请一个gitee账户。

  • 创建一个仓库,这样才有仓库地址,本人测试地址:

  • 然后git给自己的添加签名,这个上一篇聊过

    git config --global user.name 名字
    git config --global user.email  邮箱
    

    还是那句话这个和git账户密码没关系,当然你也可以设置成一样的。

  • 初始化某一个文件是git本地仓库

    git init // 这个前面也说过
    

注意:本地数据提交到本地仓库,才能提交远程仓库。

不同地址

在这里插入图片描述

在这里插入图片描述

可以看出对于远程仓库的地址无论是gitee还是github都有两种不同地址:

  • HTTPS :

    不管是谁,拿到url随便clone,但是在push的时候需要验证用户名和密码;

  • SSH:

    clone的项目你必须是拥有者或者管理员,而且需要在clone前添加SSH Key。

    SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。这个如何配置后面聊。

添加一个远程仓库 以及起一个别名

既然需要与远程仓库进行交互,那自然就需要知道远程仓库在哪里。所以就以我个人设置的远程仓库为例。一般习惯将别名设置和项目名一样,方便记忆

// 这个gitee 这个创建的时候是私库 
git remote add  tesssst  https://gitee.com/huikmenk/test.git

在这里插入图片描述

这样等于添加一个远程仓库。

查看添加的远程仓库

毕竟添加了多少仓库。

git remote  -v

在这里插入图片描述

可以看出这个地方显示两个库,但是仔细看的话会发现两者几乎一样,其实就是说一下这个仓库。

  • fetch : 其实是远程仓库同步到本地地址,其是pull一部分这再下面补充。

  • push : 就是推送到远程仓库的地址。

push/pull 远程仓库

如果在gitee创建完仓库后会有如此提示:

在这里插入图片描述

似乎已经将所有步骤都写了出来,但是我们在push的时候还是有问题的。

这个涉及到一个问题,如果在提交的时候初始化了readme文件就有另一个问题。

这个还是聊git时候的文件,切换到分支master下的text.txt文件,然后看一下内容:

在这里插入图片描述

然后再远程仓库有有哪些数据

在这里插入图片描述

两个的README.md的文件是再初始化的时候会选择添加,说白了就是对这个仓库的内容进行说明,也可以写一些如何使用的步骤。

注意一点gitee创建的默认主分支和git一样是master,但是github的默认主分支是main,当然都可以修改。

如果仓库没有自己没有push权限也是无法进行push。

现在将test.txt push到远程仓库maste:

// 因为有别名所以不写https地址了,要不然也不会起别名   git push 别名  本地分支名
git push tesssst master

在这里插入图片描述

说如果通过https push到仓库的话需要输入gitee的账户密码的。

但是还是会失败报错:

To https://gitee.com/huikmenk/test.git
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://gitee.com/huikmenk/test.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

为什么,因为首先需要通过pull,让远程和本地仓库同步。 告诉远程仓库和本地仓库,你两个算是分布式版本控制了,控制的内容一样。

//  因为有别名所以不写https地址了,要不然也不会起别名   git pull 远程地址命令  远程分支
git pull tesssst master

在这里插入图片描述

似乎没有问题,但是如果要是再push的时候:

// 其实说实话-u 这个参数带不带 效果不变。 git push tesssst master
git push -u tesssst master

在这里插入图片描述

这事为什么?因为再初始化的时候,生成了两个文件:

在这里插入图片描述

然后pull的时候没有同步到本地:

在这里插入图片描述

所以会这个时候就需要参加参数:

//--allow-unrelated-histories  也就是在合并merge的时候,有时候会不成功 ,加上这个即可
git pull  tesssst  master   --allow-unrelated-histories

在这里插入图片描述

在这里插入图片描述

然后再push的时候就不会报错:

在这里插入图片描述

这个又涉及到一个问题:那就是如果push的时候,有人在gitee网页进行修改了,你push的话因为两个版本,不一样所以需要先pull,然后调整代码再来搞:例子是添加了:qqqq

在这里插入图片描述

本地修改为:

在这里插入图片描述

然后再push试一下:

git push tesssst  master

在这里插入图片描述

所以还是需要进行pull再本地进行一次合并处理。

在这里插入图片描述

然后根据自己需求修改一下本地的test.txt文件,先后提交本地版本,再进行push就不可以了。

git push 命用和在gitee上创建的分支名不一样呢?

格式如下:

git push <远程主机名> <本地分支名>:<远程分支名>

//如果本地分支名与远程分支名相同,则可以省略冒号

git push <远程主机名> <本地分支名>

// 这个会报错的 (因为git网站我没有 test_branch 分支)
git push tesssst test_branch

在这里插入图片描述

然后如果改成如下:

// 没有这个分支也就没有必要pull了
git push tesssst  master:test_branch;

这样push的时候会发现

在这里插入图片描述

在这里插入图片描述

既然远程仓库也有了test_branch 分支了,那么再修改一下test.txt文件,是否可以通过省略写远程分支的方式上传呢?

//如果这个时候在push 也不行的,毕竟两者还需要同步一下
git push tesssst   test_branch;

然后就是pull和push操作就和操作master分支的意义了,就不解释了。

补充

其实git pull同时完成了两个步骤,如果分开的话是这样的:

git  fetch   远程仓库同步到本地
git  merge   毕竟远程仓库和自己的仓库需要合并一下内容

而在使用者一般都是为了省事直接通过pull操作。

远程仓库删除和重命名

远程仓库自然也可以删除,命令如下:

git remote rm 别名

也可以重命名:

git remote rename  旧名字  新名字

克隆仓库

这个是最常用的一种方式,那就是克隆一个项目,工作的时候项目经理也会给你这个一个地址让你克隆项目,一起svn都是时候是checkout。

一般克隆的时候会单独弄一个本地仓库文件毕竟这个是一个新项目。我随便在找一个开源的项目。

在这里插入图片描述

// 克隆一个项目 默认旧等于pull 同步了
git clone https://gitee.com/bilibala/YiSpider.git 

我估计没有新建文件夹然后看下:

在这里插入图片描述

会发现很乱,而且也不建议新建的文件夹然后初始化,毕竟如果提交的化,直接进文件里面吧,克隆的文件夹自动会初始化。

在这里插入图片描述

git clone url 默认克隆的是master分支。如果需要选择某个仓库的某分支如下操作:

git clone -b 分支名仓库地址

fork

前面一直说fork也是git牛逼的地方之一,但是需要一天远程仓库,现在看一下gitee提供的。

在这里插入图片描述

然后其实其push代码的时候会在这个地方看到:

在这里插入图片描述

通过SSH配置

这个配置其SSH配置在gitee和github大同小异,一般这个是操作自己的仓库或者被赋予了管理员权限才有必要添加。

所以就演示一个了:

第一步先通过本地命令生成一个密钥(不是git命令窗口,而是cmd窗口):

// 具有管理或者拥有者的邮箱, 也就是账户邮箱 
ssh-keygen -t rsa -C "这里输入你的邮箱@xxxxx.com" 
 

在这里插入图片描述

如果之前有,也要重新生成一下,不然会出现各自问题。

因为我本身有,所以旧选择不覆盖了,具体文件在:C:\Users\自己电脑名.ssh

在这里插入图片描述

其中: id_rsa是私钥,id_rsa.pub是公钥,将公钥复制黏贴到下面:

在gitee设置中:

在这里插入图片描述

在这里插入图片描述

添加的时候需要你输入密码确认

然后在新建一个文件test1.txt

然后push一下:

在这里插入图片描述

方便起见这个地方我们就不甚至别名了

git push   git@gitee.com:huikmenk/test.git  master

在这里插入图片描述

整个时候保存密钥的地方又生成另一个文件:

在这里插入图片描述

为啥会出这个错误呢?因为我为了重新来一遍,用的手机号注册的一个新号,但是我用的是老号的邮箱所以报错,然后我登录一下老号,重新配置了一下,然后提交如下:

在这里插入图片描述

出现问题

  • 问题1

    The authenticity of host 'gitee.com (212.64.63.190)' can't be established.
    ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
    
    • 原因1:这种第一重新生成一下密钥,要不覆盖要不就是删除后在生成文件。
    • 原因2: 没有使用有权限账户绑定的邮箱。
  • push的时候出现之前的问题:

    error: failed to push some refs to
    
    • 整个就通过pull同步一下两个库即可。

最后说一个挨打的话,虽然命令需要掌握,但是很多开发软件可以集成将整个git配置在开发软件中,通过图像操作。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值