【Git】--- Git远程操作 标签管理

 Welcome to 9ilk's Code World

       

(๑•́ ₃ •̀๑) 个人主页:       9ilk

(๑•́ ₃ •̀๑) 文章专栏:    Git  


前面我们学习的操作都是在本地仓库进行了,如果团队内多人协作都在本地仓库操作是不行的,此时需要新的解决方案 --- 远程仓库。本篇博客我们将讲解关于远程仓库的一些操作同时介绍一下标签的相关知识。


🏠 Git远程操作

理解分布式版本控制系统

我们目前所说的所有内容(工作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者计算机上。而我们的Git其实是分布式版本控制系统!那什么是分布式版本控制系统呢?

实际开发中我们是需要多人协作的,只具备我们之前所讲的分支功能是不足以支撑我们的多人协作开发的。我们之前的操作是在本地开发(即一台服务器上),如果多人开发,我们肯定是希望每个人在属于自己的服务器上开发,此时初步方案是每台服务器上有属于自己的一个完整版本库,团队人员之前只需要把各自的修改推送给对方,就可以互相看到对方的修改了

但这种方案也有其局限性,如果其中一台主机没连上局域网或硬盘损坏导致本地仓库内容全部丢失,此时不易修复,因此有了下面的方案:

这其实就相当于是一个分布式版本控制系统 , 分布式版本控制系统通常也有一台充当"中央服务器"的电脑,但这个服务器的作用仅仅是用来方便"交换"大家的修改,没有它大家也一样干活,每个本地仓库都是完整的,并且可以独立于其他仓库进行操作,远程仓库只是一个共享平台,而不是一个单一的中心,方便多人协作且安全性很高,有了它就不怕本地出现什么故障,出现故障直接拉取即可。

远程仓库

Git是分布式版本控制系统,同一个Git仓库,可以分布到不同机器上。最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以"克隆"这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分。

了解这些之后,我们要明白的是,一台电脑也是可以克隆多个版本库的,只要不是在同一个目录下,但是在一台电脑上克隆几个远程库完成没有意义

实际情况是,找一台电脑充当服务器的角色,每天24h开机,其他每个人都从这个“服务器”仓库克隆一份到自己电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。

我们学习Git需要自己搭建个中间服务器吗?其实不用,国外的GitHub和国内的Gitee网站已经提供Git仓库托管服务了,本篇博客我们以gitee为例来使用远程仓库。

Gitee新建仓库步骤如下:

1. 在首页找到新建仓库选项

2. 设置相关选项

注意:

(1)  一个远程仓库内包含了不同的成员,可以在管理仓库选项进行设置,不同成员对应不同的权限

(2) Git的Issue文件一般是团队开发人员或用户用来报告bug,功能请求的重要工具,帮助开发者发现问题。

(3)Pull Request : 合并申请单。实际开发中,仓库管理员不允许开发者直接将次分支dev合并到master分支,需要提交合并申请单说明合并原因等,管理员看到同意之后才进行合并操作。

克隆远程仓库到本地

要想克隆一个远端仓库到本地,gitee是给我们提供相应操作的:

我们可以看到gitee给我们提供了克隆仓库可以使用的多种数据传输协议。其中,SSH协议HTTPS协议是Git最常使用的两种数据传输协议SSH协议使用了公钥加密和公钥登陆机制,体现了其实用性和安全性,使用此协议需要将我们的公钥放上服务器,Git服务器进行管理。使用HTTPS方式时,没有要求,可以直接克隆下来。

(1)HTTPS

点开克隆仓库选择HTTPS会显示HTTPS远程克隆地址,我们需要将其复制下来:

克隆仓库的指令:

git clone + HTTPS克隆地址

注意:克隆操作不能在任意一个本地仓库下执行!

我们使用ls -a命令查看克隆仓库与远端仓库是相同的:

克隆之后状态如下:

  • origin代表克隆下来仓库的默认仓库名

如果我想查看克隆仓库的信息可以使用git remote命令:

git remote //查看远程仓库
git remote -v 查看更多详细信息

我们可以看到我们克隆下来的仓库具有fetch(拉取权限) 和 push(推送权限)

(2)SSH

同样的,SSH协议也有个对应的克隆地址,但是与HTTPS不同的是,SSH协议采用了公钥加密和公钥登录机制,需要将我们的公钥放上服务器,Git服务器进行管理

我们现在码云的安全设置里查看Git服务器是否配置了公钥:

此时没有配置公钥进行克隆操作是会报错的:

配置公钥:

(1)查看.ssh目录。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有 id_rsa id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,需要创建SSHKey

(2)创建SSH-Key : 

# 注意要输⼊⾃⼰的邮箱,然后⼀路回⻋,使⽤默认值即可
ssh-keygen -t rsa -C "xxxx"

查看.ssh目录是否创建成功:

(3) 打开id_rsa.pub将公钥配置到码云:

cat id_rsa.pub

(4) 克隆

向远程仓库推送

本地已经clone成功远程仓库后,我们便可以向仓库中提交内容。

在推送之前,我们最好将我们克隆仓库的配置项设置好,user.name与user.email和码云保持一致:

我们在本地新建file.txt文件然后进行提交,此时会与我们之前本地新建仓库报出的信息不同:

向远端仓库提交需要使用git push命令:

git push origin master:master //远程仓库 本地分支:远程分支
git push origin master //远程分支与本地分支名相同远程分支可以省略

注意:对于远程仓库的master分支,在克隆的时候git会自动帮我们和克隆仓库建立联系,这样才能push和pull。

拉取远程仓库

拉取操作一般是远端仓库版本领先于当前本地仓库,下面我们进行演示:

(1)在远端仓库编辑文件

注意:实际开发中不要在远程仓库上编辑,这里只是演示需要

(2)从远端仓库中拉取

git pull origin master:master 远程仓库 远程分支:本地分支
git pull origin master //本地分支与master分支名相同可以省略

注意:pull帮我们完成两件事,先将代码拉取,然后merge分支。相当于是git fetch 和 git merge的组合,如果合并有冲突,还需我们自己手动解决。

忽略特殊文件

在日常开发中,我们有些文件不想或者不应该提交到远端,比如保存了数据库密码的配置文件,那怎么让Git知道呢?在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件了。日常开发我们不只改一个文件,可能一次性改多个文件,一般是git add . 此时不想对一个文件add误操作的话.gitignore就是帮我们解决这个问题的。

gitee在我们新建仓库时可以帮我们生成,只不过需要我们进行勾选:

当然你也可以在工作区的根目录下创建一个特殊的.gitignore文件

测试:

如果我们想强制将忽略文件添加,可以带上-f选项:

git add -f //强制将忽略文件添加

但这有点违背我们使用.gitignore的初衷了,我们可以在.gitignore文件中使用 !+文件名 的格式设置不想忽略的:

如果我们想查看一个文件被忽略的原因,可以使用命令:

git check-ignore -v 查看为什么被忽略

这里的意思是被忽略是因为第三行的*.so

配置命令别名

我们发现有些Git命令比较长,幸运的是,Git与Linux一样支持对命令进行简化,即“取别名”。

//在全局给git status取别名git config --global alias.st status

此后我们可以使用git st来查看查看状态了:

//补充命令
git log --pretty=oneline --abbrev-commit
//打印出短的commit id

🏠 Git标签管理

标签tag,可以简单的理解为是对某次 commit的一个标识相当于起了一个别名。例如,在项目发布某个版本的时候,针对最后一次 commit 起一个V1.0这样的标签来标识里程碑的意义。

这有什么用呢?相较于难以记住的commit id,tag很好的解决这个问题,因为tag一定要给一个让人容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使用标签就能很快定位到

创建标签

git tag v1.0 //默认给最新一次提交打标签
git tag 列举出当前哪些标签存在

查看.git目录变化:

注意 : 默认标签是打在最新提交的commit上的。

如果我想给指定提交打标签呢?

git tag 标签名 + commit id //给指定提交打标签

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

Git还提供可以创建带有说明的标签,用-a指定标签名,-m指定说明文字,格式为:

git tag -a 标签名 -m "message"  //对标签进行描述
git show 标签名 //查看标签的描述信息

删除标签

git tag -d 标签名

推送标签

(1) 推送指定标签

 git push origin v1.0

打开查看标签信息:

(2) 推送所有标签

git push origin --tags //推送所有标签

(3) 在本地删除远端仓库标签

  • 先在本地删除标签,本地删除也是修改
git tag -d
  • 推送到远端

此时我们发现远端标签成功被删除了:


总结远程仓库相关操作
1. git clone --- 克隆仓库

2. git remote [-v] --- 查看远程仓库信息

3. git push 远程仓库名 本地分支:远程分支 --- 向远程仓库推送

4. git pull 远程仓库 远程分支:本地分支 --- 拉取远程仓库

5. 配置命令别名:git config alias.xxx 命令

总结标签管理

1. git tag 标签名 --- 创建标签

2. git tag --- 查看标签信息

3. git tag -d + 标签 --- 删除标签

4. git push 远程仓库 分支 --- 推送分支

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/40047.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Deepseek API+Python 测试用例一键生成与导出 V1.0.3

** 功能详解** 随着软件测试复杂度的不断提升,测试工程师需要更高效的方法来设计高覆盖率的测试用例。Deepseek API+Python 测试用例生成工具在 V1.0.3 版本中,新增了多个功能点,优化了提示词模板,并增强了对文档和接口测试用例的支持,极大提升了测试用例设计的智能化和易…

Axure RP9.0 教程:左侧菜单列表导航 ( 点击父级菜单,子菜单自动收缩或展开)【响应式的菜单导航】

文章目录 引言I 实现步骤添加商品管理菜单组推拉效果引言 应用场景:PC端管理后台页面,左侧菜单列表导航。 思路: 用到了动态面板的两个交互效果来实现:隐藏/显示切换、展开/收起元件向下I 实现步骤 添加商品管理菜单组 在左侧画布区域添加一个菜单栏矩形框;再添加一个商…

详细比较StringRedisTemplate和RedisTemplate的区别及使用方法,及解决融合使用方法

前言 感觉StringRedisTemplate和RedisTemplate非常的相识,到底有什么区别和联系呢?点开idea,打开其依赖关系,可以看出只需使用maven依赖包spring-boot-starter-data-redis,然后在service中注入StringRedisTemplate或者…

SpringSecurity——前后端分离登录认证

SpringSecurity——前后端分离登录认证的整个过程 前端&#xff1a; 使用Axios向后端发送请求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录</title><script src"https://cdn…

如何用腾讯云建站做好一个多语言的建筑工程网站?海外用户访问量提升3倍!分享我的经验

作为新疆地区领先的工程建筑企业&#xff0c;我们深知在数字化浪潮中&#xff0c;一个专业、高效且具备国际视野的官方网站是企业形象与业务拓展的“门面担当”。然而&#xff0c;传统的建站流程复杂、技术门槛高、多语言适配难等问题&#xff0c;曾让我们在数字化转型中举步维…

遥控器钥匙学习---通过uds指令

1、实际报文 2、硬件配置信息 使用原gateway硬件&#xff0c;软件基于sbcm-main工程新建的一个分支。主要用于钥匙学习的指令发送。 3、后续更改 这里需要细化一下&#xff0c;为了后续方便测试 4、钥匙学习策略 可以学习2把钥匙 一次可以学习把钥匙&#xff0c;uds命令&…

QinQ项展 VLAN 空间

随着以太网技术在网络中的大量部署&#xff0c;利用 VLAN 对用户进行隔离和标识受到很大限制。因为 IEEE802.1Q 中定义的 VLAN Tag 域只有 12 个比特&#xff0c;仅能表示 4096 个 VLAN&#xff0c;无法满足城域以太网中标识大量用户的需求&#xff0c;于是 QinQ 技术应运而生。…

给Web开发者的HarmonyOS指南02-布局样式

给Web开发者的HarmonyOS指南02-布局样式 本系列教程适合鸿蒙 HarmonyOS 初学者&#xff0c;为那些熟悉用 HTML 与 CSS 语法的 Web 前端开发者准备的。 本系列教程会将 HTML/CSS 代码片段替换为等价的 HarmonyOS/ArkUI 代码。 布局基础对比 在Web开发中&#xff0c;我们使用CS…

mapbox进阶,添加鹰眼图控件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️mapboxgl-minimap 鹰眼控件二、🍀添加…

Linux 配置时间服务器

一、同步阿里云服务器时间 服务端设置 1.检查chrony服务是否安装&#xff0c;设置chrony开机自启&#xff0c;查看chrony服务状态 [rootnode1-server ~]# rpm -q chrony # rpm -q 用于查看包是否安装 chrony-4.3-1.el9.x86_64 [rootnode1-server ~]# systemctl enable --n…

Android实践开发制作小猴子摘桃小游戏

Android实践制作小猴子摘桃小游戏 实践素材项目源文件获取&#xff1a;Android可以存在版本差异项目如果不能正确运行&#xff0c;可以使用里面的素材自己构建项目Android实践制作小猴子摘桃小游戏Android实践制作小猴子摘桃小游戏https://mp.weixin.qq.com/s/jNU_hVfj9xklsil…

数据库查询练习

1.单表查询 CREATE TABLE worker (部门号 int(11) NOT NULL,职工号 int(11) NOT NULL,工作时间 date NOT NULL,工资 float(8,2) NOT NULL,政治面貌 varchar(10) NOT NULL DEFAULT 群众,姓名 varchar(20) NOT NULL,出生日期 date NOT NULL,PRIMARY KEY (职工号) ) ENGINEInnoDB…

VGG 改进:添加ScConv空间与通道特征重构卷积

目录 1. ScConv空间与通道特征重构卷积 2. VGG+ScConv模块 3. 完整代码 Tips:融入模块后的网络经过测试,可以直接使用,设置好输入和输出的图片维度即可 1. ScConv空间与通道特征重构卷积 ScConv (Spatial and Channel reconstruction Convolution) 是一种旨在减少卷积神…

如何优化SQL查询以提高数据库性能?

你正在自助餐厅&#xff0c;所有的食物看起来都很美味。但你不是拿一个盘子&#xff0c;只取你需要的&#xff0c;而是开始从各个角落堆满食物&#xff0c;弄得一团糟&#xff0c;速度也慢了下来。结果是什么&#xff1f;你拿的东西很多并且效率低下。 这就像没有优化的SQL查询…

VS2022的第一个Qt程序——实战《加载并显示图像》

目录 一、UI设计 S1&#xff1a;双击Form Files下.ui文件&#xff0c;进入ui设计界面Qt Designer S2&#xff1a;然后拖动一个Push Button和Label控件到界面 S3&#xff1a;点击信号与槽&#xff0c;然后点击PushButton往外拉一下 S4&#xff1a;松开鼠标进入配置连接界面…

决策树算法详解:从西瓜分类到实战应用

目录 0. 引言 1. 决策树是什么&#xff1f; 1.1 生活中的决策树 1.2 专业版决策树 2. 如何构建决策树&#xff1f; 2.1 关键问题&#xff1a;选哪个特征先判断&#xff1f; 2.1.1 信息熵&#xff08;数据混乱度&#xff09; 2.1.2 信息增益&#xff08;划分后的整洁度提…

Python 标准库与数据结构

Python的标准库提供了丰富的内置数据结构和函数&#xff0c;使用这些工具能为我们提供一套强有力的工具。 需要注意的是&#xff0c;相比C与Java&#xff0c;Python的一些特点&#xff1a; Python不需要显式声明变量类型Python没有模板(Template)的概念&#xff0c;因为Pytho…

VUE3 路由配置

1.下载 VueRouter 模块 在命令行中输入 yarn add vue-router 2.导⼊相关函数 在自己创建的router/index.js 文件中 import { createRouter, createWebHashHistory } from vue-router 3.创建路由实例 在自己创建的router/index.js 文件中 const theFirstRouter ()>{return…

算法训练营第二十三天 | 贪心算法(一)

文章目录 一、贪心算法理论基础二、Leetcode 455.分发饼干二、Leetcode 376. 摆动序列三、Leetcode 53. 最大子序和 一、贪心算法理论基础 贪心算法是一种在每一步选择中都采取当前状态下的最优决策&#xff0c;从而希望最终达到全局最优解的算法设计技术。 基本思想 贪心算…

Apifox下载安装

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Apifox下载安装使用1. 下载2. 安装 &#x1…