Git原理与应用(三)远程操作

一.远程仓库操作

Git是一个分布式版本控制系统

1.理解分布式版本控制系统

在分布式版本控制系统中:
每一台电脑都有完整的版本库,你可以在本地分支上进行提交代码,合并分支,解决冲突等操作
在多人协作开发的时候只需要把各自的修改推送给对方,就能够看到对方修改后的代码了

2.远程仓库的创建

登录码云网站,注册账号
新建远程仓库

在这里插入图片描述


在这里插入图片描述


然后点击创建

在这里插入图片描述


在这里插入图片描述


我们也可以将这个仓库设置为开源

创建成功后我们要将这个远程仓库克隆到本地

3.远程仓库克隆到本地

克隆/下载远程仓库到本地需要使用

git clone 远程仓库链接

在这里插入图片描述


我们可以在这里找到刚才远程仓库的链接
我们在这里使用https协议来克隆远程仓库到本地
克隆仓库时需要我们输入码云平台的密码和码云平台的用户名

在这里插入图片描述


这个@后面的东西就是用户名 wu-zaishuo

在这里插入图片描述


下面我新创建了一个目录:
blogforgit
然后进入到这个目录当中进行git clone把远程仓库
git_blog克隆过来

4.向远程仓库推送:push

git push

在这里插入图片描述


如何配置:

git config user.name "用户名称"
git config user.email "email地址"

还有一个选项:--global:
git config --global user.name "用户名称"
git config --global user.email "email地址"

这个--global的意思就是:如果加上这个--global
那么就表示这台机器上的所有的Git仓库都会使用这个配置.

如果你希望在不同仓库中使用不同的用户名或email地址
那么可以不加这个选项

查看配置:

git config -l

删除配置:

git config --unset user.name
git config --unset user.email

git config --global --unset user.name
git config --global --unset user.email

在git_blog里面新建一个文件test.txt
并写入:

在这里插入图片描述


然后add commit

在这里插入图片描述


我之前配置过git了

在这里插入图片描述


此时我们的远程仓库里面就有test.txt这个文件了

在这里插入图片描述

git push 远程主机名(默认是origin) 本地仓库的分支名:远程仓库的分支名

注意:
如果本地仓库的分支名跟远程仓库的分支名相同,则可以省略冒号这样去写
git push 远程主机名(默认是origin) 本地仓库的分支名

5.拉取远程仓库:pull

push是推送本地仓库到远程仓库当中
作用: 在本地仓库领先于远程仓库时 让远程仓库跟本地仓库同步

pull是拉取远程仓库到本地仓库中
作用: 在远程仓库领先于本地仓库时 让本地仓库跟远程仓库同步

git pull 远程主机名(默认是origin) 远程仓库的分支名:本地仓库的分支名

注意:
如果本地仓库的分支名跟远程仓库的分支名相同,则可以省略冒号这样去写
git push 远程主机名(默认是origin) 远程仓库的分支名

二.模拟进行多人协作开发

目前我们所学习到的内容如下:
1.基本完成了Git本地仓库的相关操作,git的基本操作,分支理解,版本回退,冲突解决等等
2.申请码云账号,克隆远程仓库,以及push和pull

下面我们模拟多人开发场景来更加深刻地学习Git

1.准备工作

首先,我们在Windows环境下再去克隆那个git_blog远程仓库到本地,来模拟那位跟我们一起协作开发的小伙伴

在这里插入图片描述


在这里插入图片描述


打开之后就类似于这个样子:
叫做Windows PowerShell

在这里插入图片描述


然后

git clone 远程仓库链接

在这里插入图片描述


在这里插入图片描述


克隆成功
我们现在就相当于有了两个用户,分别在Linux和Windows上面针对于于同一项目进行协作开发

然后我们在gitee网站上面新建一个dev分支来供我们使用

在这里插入图片描述


在这里插入图片描述


然后我们pull拉取到本地仓库中,并且在本地仓库也建立dev分支

注意:一定要先进入克隆下来的远程仓库里面,然后在进行下面的操作!

首先是我们Linux环境下的操作:
首先pull拉取远程仓库

在这里插入图片描述

git branch  查看本地分支
git branch -r 查看远程分支
git branch -a 既可以查看远程分支,又可以查看本地分支

在这里插入图片描述


然后在本地仓库也建立dev分支

git checkout -b dev origin/dev
新建本地分支dev  并跟远程分支dev进行关系链接
关于这个关系链接的作用:
如果有关联起来的话
将来我们可以只使用git push来推送
而且对于git pull来说也是这样

在这里插入图片描述


接着是Windows环境下的操作:

在这里插入图片描述


在Windows下建立dev分支时我们就不去一块跟远程分支dev建立关系链接了(为了说明建立关系链接跟不建立关系链接各自的操作)

在这里插入图片描述


至此,我们模拟多人协作开发的准备工作到此结束

2.多人协作1

1.多人协作开发

1.Linux用户开发

首先我们作为Linux用户现在dev分支上进行一次开发,并且push到远程

在这里插入图片描述


在这里插入图片描述


此时我们成功将file.txt推送到远端的dev分支下了

在这里插入图片描述

2.Windows用户开发

为了演示合并冲突,我们让Windows用户也去对file.txt做修改
并且push

在这里插入图片描述


新建一个文本文件并且写入内容

在这里插入图片描述


在这里插入图片描述


此时出现了合并冲突
Git提示我们先用git pull把最近的提交从远程分支dev下拉取过来
然后在本地进行合并冲突然后再去推送

2.合并冲突

在这里插入图片描述


那么该怎么办呢?

git branch --set-upstream-to=origin/dev dev
建立链接

在这里插入图片描述


然后我们解决冲突

在这里插入图片描述


然后重新add commit push

在这里插入图片描述


此时远端仓库就能够看到我们的新提交了

在这里插入图片描述


对于我们Linux开发者来说要想看到新的代码
只需要pull一下即可

在这里插入图片描述

3.分支合并

但是不要忘记
虽然我们是在dev分支上进行多人协作开发,但是我们最终的目的是要将开发后的代码合并到master上面去
让我们的项目运行最新的代码

  1. 切换至master分支,pull一下,保证本地的master分支是最新内容
  2. 切换至dev分支,合并master分支
  3. 切换至master分支,合并dev分支
  4. 将master分支推送到远端
    下面我们在Linux环境下进行这4步操作

第一步:

在这里插入图片描述


第二步:

在这里插入图片描述


第三步:

在这里插入图片描述


第四步:

在这里插入图片描述


此时master分支下已经是最新代码了

在这里插入图片描述


此时dev分支对我们来说已经没用了
我们直接在远程仓库中删除dev分支

4.小结

在这里插入图片描述

2.多人协作2

一般情况下,如果有多需求需要多人同时进行开发,是不会在一个分支上进行多人开发的,而是一个需求或者一个功能就需要创建一个feature分支

在这里插入图片描述

1.多人协作开发

1.Linux用户开发

1.新增本地分支feature-1并切换
2.新增需求内容:创建funtion1.txt文件
3.将feature-1分支推送到远端

在这里插入图片描述

2.Windows用户开发

1.新增本地分支feature-2并切换
2.新增需求内容:创建funtion2.txt文件
3.将feature-2分支推送到远端

在这里插入图片描述

此时,在本地,你看不⻅他新建的⽂档,他看不⻅你新建的⽂档。并且推送各⾃的分⽀时,并没有任何冲突,你俩互不影响,⽤起来很舒服!

对于feature-1分支:

在这里插入图片描述


对于feature-2分支:

在这里插入图片描述


正常情况下,你们两个人就可以在自己的分支上进行开发啦

2.意外来临

不过意外来临了,你的小伙伴生病了,但是它负责的需求还没有开发完
需要你去帮他继续开发
这时你就要在自己的机器上切换到feature-2分支帮他继续开发

  1. 必须要先拉取远程仓库内容
  2. 创建feature-2本地分支并且跟远程分支feature-2关联起来
  3. 切换到feature-2分支继续开发
  4. 推送内容
    第一步:

    在这里插入图片描述


    在这里插入图片描述


    第二步:

    在这里插入图片描述


    如果有关联起来的话
    将来我们可以只使用git push来推送

第三步:

在这里插入图片描述


第四步:

在这里插入图片描述


此时推送成功

在这里插入图片描述

3.Windows用户继续开发

此时小伙伴痊愈了
继续投入到开发当中

1.pull

先建立链接
然后pull

在这里插入图片描述


pull成功

在这里插入图片描述


然后Windows用户继续开发,并且率先开发完毕,开始merge

2.merge

1.切换至master,保证本地的master是最新内容
2.切换至feature-2分支,合并master分支
3.切换至master分支,合并feature-2分支
4.将master分支推送至远端

第一步:

在这里插入图片描述


第二步:

在这里插入图片描述


第三步:

在这里插入图片描述


第四步:

在这里插入图片描述


推送成功

在这里插入图片描述

4.Linux用户merge

在这里插入图片描述


我们可以发现,还是那些操作

不过在第2步合并完master分支之后
我们可以先push一下
因为:
1.feature-1分⽀已经merge进来了新内容,为了保证远程分⽀最新,所以最好push⼀下。
2.在实际的开发中,master的merge操作⼀般不是由我们⾃⼰在本地进行的
其他⼈员merge时,操作的肯定是远程分⽀,所以就要保证远程分⽀的最新

如果merge出现了冲突,不要忘记需要commit才可以push!

第一步:

在这里插入图片描述


第二步:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


第三步:

在这里插入图片描述


第四步:

在这里插入图片描述


在这里插入图片描述


此时开发成功
最后删除feature-1和feature-2分支即可

三.补充

1.远程分支删除之后,本地git branch -a依然能够看到的解决方法

在这里插入图片描述


当前我们已经删除了远程的⼏个分⽀,使⽤git branch -a命令可以查看所有本地分⽀和远程分⽀,但发现很多在远程仓库已经删除的分⽀在本地依然可以看到

git remote show origin
可以查看remote地址,远程分支还有跟本地分支相对应的关系等等信息

git remote prune origin 删除那些远程仓库中已经不存在的分支

在这里插入图片描述


在这里插入图片描述

2.给配置起别名

Git支持对命令进行简化
举个例子:
将git log --pretty=oneline简化为glog

git config alias.glog log --pretty=oneline
git config --global alias.glog log --pretty=oneline

这里的–global可加可不加,
加上之后这些命令在这台机器的所有Git仓库都有用
如果不加,那么只针对当前仓库起作用

3.标签管理

1.理解标签

在这里插入图片描述

2.创建标签

git tag        作用: 查看所有标签
git tag 标签名  作用: 创建标签

默认情况下标签是打在最新提交的commit上的
那如何在指定的commit上打标签呢?方法是找到历史提交的commit id,然后打上就可以了

注意:标签不是按时间顺序列出,而是按照字母排序的

git show 标签名    作用:   查看标签信息
git tag -a 标签名 -m "说明文字" [commit id]
作用:创建带有说明的标签
-a用来指定标签名   
-m用来指定说明文字

打完标签之后我们也可以使用tree .git来查看一下本地仓库的变化
加深理解

3.操作标签

git -d 删除标签
因为创建的标签都只存储在本地,不会⾃动推送到远程.所以,打错的标签可以在本地安全删除

推送某个标签到远程:
git push origin 标签名

一次性把所有的标签都推送到远端:
git push origin --tags

如果该标签已经推送到远程,那么删除标签就要这样:
1.先从本地删除
2.从远程删除:
删除命令:git push origin :refs/tags/标签名

以上就是Git原理与应用(三)远程操作的全部内容,希望能对大家有所帮助!

原文地址:https://blog.csdn.net/Wzs040810/article/details/134582350

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读774次,点赞24次,收藏16次。typescript项目中我们使用typings-for-css-modules-loader来替代css-loader实现css modules。1、typings-for-css-modules-loader加载器介绍 Webpack加载器,用作css-loader的替代产品,可动态生成CSS模块的TypeScript类型这句话是什么意思呢?就是编译时处理css文件...
文章浏览阅读784次。react router redux antd eslint prettier less axios_react+antd+redux+less
文章浏览阅读3.9k次,点赞5次,收藏11次。需要删除.security-7索引文件。把在第1步中的被注释的配置打开。之后就是按照提示输入密码。执行bin目录下的文件。_failed to authenticate user 'elastic' against
文章浏览阅读1.2k次,点赞23次,收藏24次。Centos 8 安装es_centos8 yum elasticsearch
文章浏览阅读3.2k次。设置完之后,数据会⾃动同步到其他节点。修改密码时,将第⼀步配置删除,然后重启。单独使⽤⼀个节点⽣成证书;执⾏设置⽤户名和密码的命令。执⾏完上⾯命令以后就可以在。⽂件,在⾥⾯添加如下内容。这个⽂件复制到其他节点下。其中⼀个节点设置密码即可。依次对每个账户设置密码。全部节点都要重启⼀遍。需要在配置⽂件中开启。个⽤户分别设置密码,⽬录下,证书⽂件名为。功能,并指定证书位置。_es设置账号和密码
文章浏览阅读1.9k次,点赞2次,收藏7次。针对多数据源写入的场景,可以借助MQ实现异步的多源写入,这种情况下各个源的写入逻辑互不干扰,不会由于单个数据源写入异常或缓慢影响其他数据源的写入,虽然整体写入的吞吐量增大了,但是由于MQ消费是异步消费,所以不适合实时业务场景。不易出现数据丢失问题,主要基于MQ消息的消费保障机制,比如ES宕机或者写入失败,还能重新消费MQ消息。针对这种情况,有数据强一致性要求的,就必须双写放到事务中来处理,而一旦用上事物,则性能下降更加明显。可能出现延时问题:MQ是异步消费模型,用户写入的数据不一定可以马上看到,造成延时。_mysql同步es
文章浏览阅读3.6w次,点赞48次,收藏44次。【程序员洲洲送书福利-第十九期】《C++ Core Guidelines解析》
文章浏览阅读1.3k次。当我们在开发Vue应用时,经常需要对表单进行校验,以确保用户输入的数据符合预期。Vue提供了一个强大的校验规则机制,通过定义rules规则,可以方便地对表单进行验证,并给出相应的错误提示。_vue ruler校验
文章浏览阅读2k次,点赞16次,收藏12次。Linux内核源码下载地址及方式_linux源码下载
文章浏览阅读1k次。这样在每天自动生成的索引skywalking_log_xxx就会使用上述模版来生成,timestamp会被设置成date类型。然后此时在–>索引管理–>kibana–>索引模式添加skywalking_log*索引时就会有时间字段了。在通过skywalking将日志收集到es后,由于skywalking收集的日志(skywalking_log索引)没有date类型的字段导致在es上再索引模式中没有时间范围的查询。skywalking收集的日志有时间戳字段timestamp,只是默认为long类型。_skywalking timestamp
文章浏览阅读937次,点赞18次,收藏21次。1.初始化git仓库,使用git int命令。2.添加文件到git仓库,两步走:2.1 使用命令,注意,可反复多次使用,添加多个文件;2.2 使用命令,完成。此笔记是我个人学习记录笔记,通过廖雪峰的笔记进行学习,用自己能理解的笔记记录下来,如果侵权,联系删。不存在任何盈利性质,单纯发布后,用于自己学习回顾。
文章浏览阅读786次,点赞8次,收藏7次。上述示例中的 origin 是远程仓库的名称,https://github.com/example/repository.git 是远程仓库的 URL,(fetch) 表示该远程仓库用于获取更新,(push) 表示该远程仓库用于推送更新。你可以选择在本地仓库创建与远程仓库分支对应的本地分支,也可以直接将本地仓库的分支推送到远程仓库的对应分支。将 替换为远程仓库的名称(例如 origin), 替换为要推送的本地分支的名称, 替换为要推送到的远程分支的名称。_git remote 智能切换仓库
文章浏览阅读1.5k次。配置eslint校验代码工具_eslint 实时校验
文章浏览阅读1.2k次,点赞28次,收藏26次。Git入门基础介绍,什么是Git,如何使用Git,以及Git的工作的基本原理
文章浏览阅读2.7k次。基于官方给出的几种不同环境不同的安装方式,本文将会选择在使用.zip文件在Windows上安装Elasticsearch在Linux或macOS上从存档文件安装ElasticsearchInstall Elasticsearch with Docker (此种方式待定)使用Docker安装Elasticsearch。_elasticsearch安装部署windows
文章浏览阅读3.3k次,点赞5次,收藏11次。【Linux驱动】内核模块编译 —— make modules 的使用(单模块编译、多模块编译)_make modules
文章浏览阅读1k次。docker启动es报错_max virtual memory areas vm.max_map_count [65530] is too low, increase to at
文章浏览阅读4.2k次,点赞2次,收藏6次。使用docker单机安装elasticsearch后再安装kibana时找不到es。_unable to retrieve version information from elasticsearch nodes. security_ex
文章浏览阅读1.1k次。日志处理对于任何现代IT系统都是关键部分,本教程专为新手设计,通过详细解释Logstash的三大核心组件,为您展示如何从零开始搭建强大的日志处理系统。您还将学习如何同步MySQL数据到Elasticsearch,并通过一个"Hello World"示例快速入门。无论您是完全的新手还是有一些基础,本教程都将引导您顺利掌握Logstash的基本操作和高级应用。_logstash mysql
文章浏览阅读1.1w次,点赞5次,收藏25次。执行这条指令之后,你的本地项目就与远程Git仓库建立了连接,你就可以开始对你的代码进行版本追踪和协作开发了。使用“git remote add origin”指令,可以轻松地将本地项目连接到远程Git仓库。git remote set-url origin 执行这条指令之后,Git就会将已经添加的名为“origin”的仓库删除。git remote add origin 其中,是你的远程Git仓库的网址。_git remote add origin