Git版本与分支

news2025/1/19 2:40:33

目录

一、Git

二、配置SSH

1.什么是SSH Key

2.配置SSH Key

三、分支

1.为什么要使用分支

2.四个环境及特点

3.实践操作

1.创建分支

2.查看分支

3.切换分支

4.合并分支

5.删除分支

6.重命名分支

7.推送远程分支

8.拉取远程分支

9.克隆指定分支

四、版本

1.什么是版本

2.实践操作

1.创建标签

2.查看所有标签

3.删除标签

4.推送标签到远程

5.克隆指定标签到本地


一、Git

GIT官方网站为了解决部分用户通过命令行对git工具使用时的怨声载道的现象,因此推出了一个GIT的可视化工具Git Gui。

找到电脑任意位置,右键 -> Git Gui Here 打开可视化窗口操作Git。

GitGui建议与ssh key一起使用更加方便

类似的Git的图形化界面工具还有很多,例如:windows上的TortoiseGit,Mac则上SourceTre

二、配置SSH

1.什么是SSH Key

SSH 密钥对可以让您方便的登录到 SSH 服务器,而无需输入密码。SSH 密钥对总是成双出现的,一把公钥,一把私钥。公钥可以自由的放在您所需要连接的 SSH 服务器上,而私钥必须的保管好。

每台电脑上会产生出一个ssh key,然后自己有一个远程账户,但是自己有可能有很多台电脑,包括家里的电脑还有公司的电脑,我们可以在任意一台电脑上工作,但是如果想要每台电脑都和远程版本库时刻保持着通讯,就需要将每台电脑的ssh key添加到远程账户,添加到远程版本库之后,远程版本库就会和已经添加的电脑进行通讯而不会和其他电脑进行通讯。

2.配置SSH Key

操作分为本地电脑配置(前三个步骤属于本地电脑配置)和gitee网站配置。

第一步:配置用户和邮箱(如果已经配置,则跳过)

# 配置用户名
git config --global user.name "username"
# 配置邮箱
git config --global user.email "email"

第二步:检查本地是否存在ssh

找到电脑任意位置,右键 -> Git Bash Here 打开命令窗口,输入以下命令:

# 检查是否存在ssh
cd ~/.ssh
# 查看该目录下是否存在ssh秘钥文件
ls

当cd ~/.ssh命令执行后窗口返回no such file or directory的时候,表示我们的电脑并没有ssh key,所以需要我们创建ssh key。

1) ~表示当前用户的目录,比如我的是:C:\Users\L 2) ls命令执行后,如果本地有ssh秘钥的话会有id_rsa.pub,config,known_hosts等文件

第三步:生成或删除秘钥  

# 请修改成自己的注册邮箱地址
ssh-keygen -t rsa -C "xxx@xx.com"

输入以上命令,接着按3个回车即可。如果本地有ssh,执行以上命令会出现正面的提示,这里选择y,表示覆盖本地的ssh key,其实也就是ssh秘钥删除的意思。

第四步:远程gitee配置

登录到gitee,点击最后侧闹钟图标,选择账号设置页面,最后找到SSH公钥。

输入公钥的标题公钥,点击确定按钮即可。

第五步:测试SSH连接

输入测试命令:ssh -T git@gitee.com

如果显示如下内容,表示ssh key添加成功:

 Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

三、分支

1.为什么要使用分支

假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

怎么办? 现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

2.四个环境及特点

四个环境分别是:dev、test、pre、pro(master),中文名字:开发环境、测试环境、灰度环境、生产环境

  • dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大;

  • test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定;

  • pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样;

  • pro(master)环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境;

3.实践操作

1.创建分支

# 仅仅保存本地,远程还需要push
git branch name     

2.查看分支

查看分支,此命令会列出所有分支,当前分支前面会标一个*号

# 查看本地分支
git branch      
# 查看远程分支
git branch -a        

3.切换分支

# 切换分支
git checkout name

创建+切换分支命令如下:

# 创建+切换
git checkout -b name

4.合并分支

首先切换到需要合并到的目标分支,例如A分支合并到B分支,则B分支为合并到的目标分支。

# 合并分支
git merge name

5.删除分支

# 删除本地分支
git branch -d 分支名称                     
# 删除远程分支
git push origin --delete dev   

6.重命名分支

oldBranchName表示要改的本地分支名称,newBranchName表示修改后的本地分支名称。

# 重命名分支
git branch -m oldBranchName newBranchName

7.推送远程分支

推荐使用第2种方式,git push origin <远程分支名

# 将本地当前分支 推送到 远程指定分支上
git push <远程仓库名> <本地分支名>:<远程分支名>
# 将本地当前分支 推送到 远程指定分支上
git push <远程仓库名> <远程分支名>
# 将本地当前分支 推送到 与本地当前分支同名的远程分支上
git push <远程仓库名>

8.拉取远程分支

在克隆远程项目的时候,本地分支会自动与远程分支建立追踪关系,可以使用默认的origin来替代远程仓库名,所以,我常用的命令就是 git pull origin <远程仓库名>,操作简单,安全可控。

# 将远程指定分支 拉取到 本地指定分支上
git pull <远程仓库名> <远程分支名>:<本地分支名>
# 将远程指定分支 拉取到 本地当前分支上:
git pull <远程仓库名> <远程分支名>
# 将与本地当前分支同名的远程分支 拉取到 本地当前分支上
git pull <远程仓库名>

9.克隆指定分支

使用git拉代码时可以使用 -b 指定分支。

指定拉取master分支代码:

git clone -b master git地址

指定拉取dev分支代码:

git clone -b dev git地址

四、版本

1.什么是版本

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。 将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。

软件版本号由四部分组成,第一个1为主版本号,第二个1为子版本号,第三个1为阶段版本号,第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有5种,分别为:base、alpha、beta、RC、release。例如:1.0.0.230322_beta。

有的公司在版本命名时,前面加v,“-”替换成“_”,更加详细一点还可以在修订号后面添加发布日期v1.0.0.191220_alpha,这都是可以的。  

软件版本阶段说明:

  • Base版:此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中的功能都没有做完整的实现,只是做为整体网站的一个基础架构。

  • Alpha版:此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。

  • Beta版:该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。

  • RC版:该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。

  • Release版:该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。

分支与版本的关系

分支版本
devalpha
testbeta
prerc
pror

2.实践操作

1.创建标签

首先,切换到需要打标签的分支上,例如:dev,再创建标签。

# 查看分支
git branch
# 切换到dev分支
git checkout dev
# 创建轻量标签
git tag 1.0.0-alpha
# 创建附注标签
git tag -a 1.0.0-alpha -m "一期开发完成"

git标签分为两种类型:轻量标签和附注标签,区别:附注标签带注解

2.查看所有标签

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

# 查看所有标签
git tag
# 查看标签信息
git show <tagname>

3.删除标签

因为创建的标签都只存储在本地,不会自动推送到远程。所以,标签可以在本地直接删除。

# 删除本地标签
git tag -d 1.0.0-alpha

4.推送标签到远程

因为创建的标签都只存储在本地,不会自动推送到远程,还需要手动推送

# 将本地标签推送到远程
git push origin 1.0.0-alpha

5.克隆指定标签到本地

git clone --branch [tags标签] [git地址]

例如:

git clone --branch v1.0.0.231010_alpha git地址 仓库名

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux操作系统基础(三):虚拟机与Linux系统安装

文章目录 虚拟机与Linux系统安装 一、系统的安装方式 二、虚拟机概念 三、虚拟机的安装 四、Linux系统安装 1、解压人工智能虚拟机 2、找到解压目录中的node1.vmx 3、启动操作系统 虚拟机与Linux系统安装 一、系统的安装方式 Linux操作系统也有两种安装方式&#xf…

蓝桥杯每日一题------背包问题(一)

背包问题 阅读小提示&#xff1a;这篇文章稍微有点长&#xff0c;希望可以对背包问题进行系统详细的讲解&#xff0c;在看的过程中如果有任何疑问请在评论区里指出。因为篇幅过长也可以进行选择性阅读&#xff0c;读取自己想要的那一部分即可。 前言 背包问题可以看作动态规…

js手写Promise(上)

目录 构造函数resolve与reject状态改变状态改变后就无法再次改变 代码优化回调函数中抛出错误 thenonFulfilled和onRejected的调用时机异步then多个then 如果是不知道或者对Promise不熟悉的铁铁可以先看我这篇文章 Promise 构造函数 在最开始&#xff0c;我们先不去考虑Promi…

精简还是全能?如何在 Full 和 Lite 之间做出最佳选择!关于Configuration注解的Full模式与Lite模式(SpringBoot2)

&#x1f3c3;‍♂️ 微信公众号: 朕在debugger© 版权: 本文由【朕在debugger】原创、需要转载请联系博主&#x1f4d5; 如果文章对您有所帮助&#xff0c;欢迎关注、点赞、转发和订阅专栏&#xff01; 前言 关于 Configuration 注解&#xff0c;相信在座的各位 Javaer 都…

可达鸭二月月赛——基础赛第六场(周五)题解,这次四个题的题解都在这一篇文章内,满满干货,含有位运算的详细用法介绍。

姓名 王胤皓 T1 题解 T1 题面 T1 思路 样例输入就是骗人的&#xff0c;其实直接输出就可以了&#xff0c;输出 Hello 2024&#xff0c;注意&#xff0c;中间有一个空格&#xff01; T1 代码 #include<bits/stdc.h> using namespace std; #define ll long long int …

Swift 使用 Combine 管道和线程进行开发 从入门到精通八

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

ANSI Escape Sequence 下落的方块

ANSI Escape Sequence 下落的方块 1. ANSI Escape 的用途 无意中发现 B站有人讲解&#xff0c; 完全基于终端实现俄罗斯方块。 基本想法是借助于 ANSI Escape Sequence 实现方方块的绘制、 下落动态效果等。对于只了解 ansi escape sequence 用于 log 的颜色打印的人来说&…

(每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第10章 项目进度管理(四)

博主2023年11月通过了信息系统项目管理的考试&#xff0c;考试过程中发现考试的内容全部是教材中的内容&#xff0c;非常符合我学习的思路&#xff0c;因此博主想通过该平台把自己学习过程中的经验和教材博主认为重要的知识点分享给大家&#xff0c;希望更多的人能够通过考试&a…

【Java EE】----SpringBoot的日志文件

1.SpringBoot使用日志 先得到日志对象通过日志对象提供的方法进行打印 2.打印日志的信息 3.日志级别 作用&#xff1a; 可以筛选出重要的信息不同环境实现不同日志级别的需求 ⽇志的级别分为&#xff1a;&#xff08;1-6级别从低到高&#xff09; trace&#xff1a;微量&#…

高级数据结构与算法 | 布谷鸟过滤器(Cuckoo Filter):原理、实现、LSM Tree 优化

文章目录 Cuckoo Filter基本介绍布隆过滤器局限变体 布谷鸟哈希布谷鸟过滤器 实现数据结构优化项Victim Cache备用位置计算半排序桶 插入查找删除 应用场景&#xff1a;LSM 优化 Cuckoo Filter 基本介绍 如果对布隆过滤器不太了解&#xff0c;可以看看往期博客&#xff1a;海量…

CentOS 7安装Nodejs

说明&#xff1a;本文介绍如何在云服务器上CentOS 7操作系统上安装Nodejs。以及安装过程中遇到的问题。 下载压缩包&解压 首先&#xff0c;先去官网下载Linux版本的Node。 将下载下来的压缩包&#xff0c;上传到云服务器上&#xff0c;解压。配置环境变量。 &#xff08…

VScode为什么选择了Electron,而不是QT?

选择Electron而不是QT可能是基于以下几个原因&#xff1a; Web技术的普及和开发者生态系统&#xff1a;Web技术如HTML、CSS和JavaScript在开发者中非常普及&#xff0c;开发者生态系统庞大且活跃。使用Electron可以利用这些熟悉的Web技术和丰富的开发者社区资源。跨平台支持&am…

蓝桥杯(Web大学组)2022国赛真题:水果消消乐

思路&#xff1a; 记录点击次数&#xff0c;点击次数为1时&#xff0c;记录点击下标&#xff08;用于隐藏or消除&#xff09;、点击种类&#xff0c;点击次数为2时&#xff0c;判断该下标所对应种类与第一次是否相同 相同&#xff1a;两个都visibility:hidden &#xff08;占…

黄金交易策略(EA):三个仓位的设计是确保可以不停息做单

完整EA&#xff1a;Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客

MacOS 查AirPods 电量技巧:可实现低电量提醒、自动弹窗

要怎么透过macOS 来查询AirPods 电量呢&#xff1f;当AirPods 和Mac 配对后&#xff0c;有的朋友想通过Mac来查询AirPods有多少电量&#xff0c;这个里有几个技巧&#xff0c;下面我们来介绍一下。 透过Mac 查AirPods 电量技巧 技巧1. 利用状态列上音量功能查询 如要使用此功能…

在django中集成markdown文本框

首先需要下载开源组件&#xff1a;http://editor.md.ipandao.com/&#xff0c;可能需要挂梯子。 百度网盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1D9o3P8EQDqSqfhAw10kYkw 提取码&#xff1a;eric 1.在html代码中生成一个div&#xff0c;ideditor <div c…

【玩转408数据结构】线性表——定义和基本操作

考点剖析 线性表是算法题命题的重点&#xff0c;该类题目实现相对容易且代码量不高&#xff0c;但需要最优的性能&#xff08;也就是其时间复杂度以及空间复杂度最优&#xff09;&#xff0c;这样才可以获得满分。所以在考研复习中&#xff0c;我们需要掌握线性表的基本操作&am…

Peter算法小课堂—枚举优化

哈哈哈&#xff0c;新年快乐&#xff01;这一次Peter将要给大家讲一讲轻松、摆烂的算法—枚举&#xff01;咋就是说呀&#xff0c;枚举这个玩意我语法就会了。但大家想想&#xff0c;咱们CSP考试时&#xff08;除了没过初赛的&#xff09;只给1秒&#xff0c;大家想想&#xff…

跟着cherno手搓游戏引擎【23】项目维护、2D引擎之前的一些准备

项目维护&#xff1a; 修改文件结构&#xff1a; 头文件自己改改就好了 创建2DRendererLayer&#xff1a; Sandbox2D.h: #pragma once #include "YOTO.h" class Sandbox2D :public YOTO::Layer {public:Sandbox2D();virtual ~Sandbox2D() default;virtual void O…

【lesson46】进程通信之system V(共享内存)

文章目录 共享内存通信原理用共享内存通信shmServer.ccshmClient.cc 完整通信代码common.hppLog.hppshmServer.ccshmClient.cc通信测试 共享内存借助管道添加访问控制common.hppshmServer.ccshmClient.cc 共享内存通信原理 两个进程将一块system V的物理地址通过页表映射到自己…