Git的原理和使用(三)

1. 分支管理

1.1 合并模式

1.1.1  fast forward模式

        git log --graph --abbrev-commit

 

1.1.2 no-ff模式

        合并出现问题后需要进行手动修改:

        如下图所示:

1.1.3 不使用no-ff模式

        git merge --no-ff -m "merge dev2" dev2

1.2 分⽀策略

        在实际开发中,我们应该按照⼏个基本原则进⾏分⽀管理: ⾸先,master分⽀应该是⾮常稳定的,也就是仅⽤来发布新版本,平时不能在上⾯⼲活; 

        ⼲活都在dev分⽀上,也就是说,dev分⽀是不稳定的,到某个时候,⽐如1.0版本发布 时,再把dev分⽀合并到master上,在master分⽀发布1.0版本; 你和你的⼩伙伴们每个⼈都在dev分⽀上⼲活,每个⼈都有⾃⼰的分⽀,时不时地往dev分⽀上合并就 可以了。 所以,团队合作的分⽀看起来就像这样:

 

1.3 bug 分⽀

        假如我们现在正在 dev2 分⽀上进⾏开发,开发到⼀半,突然发现 master 分⽀上⾯有 bug,需要 解决。

        在Git中,每个 bug 都可以通过⼀个新的临时分⽀来修复,修复后,合并分⽀,然后将临时分⽀ 删除。 可现在 dev2 的代码在⼯作区中开发了⼀半,还⽆法提交,怎么办? 

        情况:分支开发了代码还未提交,master出现了bug;

        我们切回到master分支,查看状态发现我们的工作区的文件没有保存;重新切回到dev2分支,将工作区的文件进行储存;

git stash

        如下所示,我们dev2分支的内容就存储到stash里面了;

        此时我们的工作区里面比较干净;但是我们的readme虽然没有进行add操作,但是已经被git所追踪管理;

        此时来修复bug:首先进入到master创建bug分支,其次在bug分支里面进行对readme文件进行修改,add和commit操作之后回到master分支进行合并;

        此时回到dev2分支继续进行开发,发现之前的内容被放到stash里面了,所以我们要进行会发到从前的状态,

        git stash list//查看stash里面有哪些内容

        git stash pop//将stash里面的内容恢复回来

        此时对dev2分支中的内容进行提交了;

        此时的分支如下:

        如果让dev2合并到master分支上,则可能会出现冲突,如下所示:

        我们进行如下操作:

第一步:

        在dev2分支上进行合并master,然后解决冲突之后,最后回到master,合并dev2分支,此时的合并就没有问题了;

第二步:

        

1.4 强制删除本地分支

        git branch -d//只有在进行merge之后,才能使用该指令;

        我们做如下修改: git branch -D 分支名

2.远程操作

2.1 理解分布式版本控制系统

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

         可以简单理解为,我们每个⼈的电脑上都是⼀个完整的版本库,这样你⼯作的时候,就不需要联⽹ 了,因为版本库就在你⾃⼰的电脑上。既然每个⼈电脑上都有⼀个完整的版本库,那多个⼈如何协作 呢?⽐⽅说你在⾃⼰电脑上改了⽂件A,你的同事也在他的电脑上改了⽂件A,这时,你们俩之间只需 把各⾃的修改推送给对⽅,就可以互相看到对⽅的修改了。

        分布式版本控制系统的安全性要⾼很多,因为每个⼈电脑⾥都有完整的版本库,某⼀个⼈的电脑坏掉 了不要紧,随便从其他⼈那⾥复制⼀个就可以了。

         在实际使⽤分布式版本控制系统的时候,其实很少在两⼈之间的电脑上推送版本库的修改,因为可能你们俩不在⼀个局域⽹内,两台电脑互相访问不了。也可能今天你的同事病了,他的电脑压根没有开 机。因此,分布式版本控制系统通常也有⼀台充当“中央服务器”的电脑,但这个服务器的作⽤仅仅 是⽤来⽅便“交换”⼤家的修改,没有它⼤家也⼀样⼲活,只是交换修改不⽅便⽽已。有了这个“中央服务器”的电脑,这样就不怕本地出现什么故障了(⽐如运⽓差,硬盘坏了,上⾯的所有东西全部 丢失,包括git的所有内容);

        中央服务器也叫做远程仓库;github就是远程仓库,国内有平替版本的gitee码云;

2.2 创建远程仓库

点击创建:

新建issue:

 

        当我们的仓库开源之后会有人发现我们代码的bug有问题,所以会通过issue给仓库的成员提出问题,如下:

关于pull requests:

        开发者在dev分支开发完成后,要向管理者提交(pr申请单),等申请通过之后才能进行合并;

2.3 克隆远程仓库

        1、使用https协议

        复制https连接,将远程仓库复制到本地文件中来:

        git remote

        git remote -v

        查看远端的详细信息;

        2、使用ssh协议:

点击设置:

        使⽤ SSH ⽅式克隆仓库,由于我们没有添加公钥到远端库中,服务器拒绝了我们的 clone 链接。需要 我们设置⼀下:

        第⼀步:创建SSH Key。在⽤⼾主⽬录下,看看有没有.ssh⽬录,如果有,再看看这个⽬录下有没有 id_rsa 和 id_rsa.pub 这两个⽂件,如果已经有了,可直接跳到下⼀步。如果没有,需要创建 SSH Key:

ssh-keygen -t rsa -C "1533722647@qq.com"

        现在有了那两文件,返回上一目录是cd ..

        此时拿到公钥之后就要配置到码云平台上了:

        复制公钥内容到:

         复制ssh协议:

2.4 推送

        一般来说,我们本地仓库是进行操作和修改文件的,我们要把文件推送(push)到远程中央仓库,详细俩说就是将本地仓库中的master分支(只要是分支都可以),推送到中央仓库的master(也可以是其他分支)分支上;push就是分支和分支的交互;

        在推送之前确保我们的配置是一样的;

        在克隆下来的远程仓库中进行文件创建,add和commit;

        使用push来完成交互;

        git push origin master:master(本地分支:远程分支);

        如果本地和远程的交互分支的名字都一样的,上面语句可以修改为如下所示:

        git push origin master

结果如下:

2.5 拉取远程仓库

         一般来说中央仓库里面的内容先进与本地仓库,本地就要将中央的文件拉取到本地进行操作;

        直接在gitee中进行修改:

        git pull origin master:master(中央仓库:本地仓库),同时如果两个分支一样的话可以进行简写;

pull操作:

        1、将中央仓库的分支文件拉到本地

        2、将地方的文件直接覆盖,即直接合并到本地的分支上;

2.6 配置git

        在⽇常开发中,我们有些⽂件不想或者不应该提交到远端,⽐如保存了数据库密码的配置⽂件,那怎 么让 Git 知道呢?在 Git ⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件,然后把要忽略的⽂件 名填进去,Git 就会⾃动忽略这些⽂件了。

        不需要从头写 .gitignore ⽂件,gitee 在创建仓库时就可以为我们⽣成,不过需要我们主动勾选⼀ 下,简单来说就是有的特殊文件不想让git来追踪管理,我们就把这些文件放入到gitingnore文件中:

        由于我们在初始化的时候没有勾选gitingnore文件,所以要在本地仓库来进行手动创建一个;

        如上所示所有.so文件都无法进行追踪管理;

        如果我们想让.so文件的有些文件强制被追踪管理;

        使用下面指令-f:git add -f b.so

        但是我们不建议使用该文件,我们应该在giyignore文件里面进行修改:

        在文件里面添加!c.so,即排除这个文件;

        查看d.so被忽略的指令在那里

         接下里把刚写好的文件推送到远端去:

 -----------------------------------------------------------------------------------------------------

设置全局配置项别名:

给git status起别名:

        git config --global alias.st status

        git st:

 

        git log --pretty=oneline --abbrev-commit打印提交的漂亮的日志

        设置为段指令:

        git config --global alias.lpa 'log --pretty=oneline --abbrev-commit'

        即git lpa

2.7 标签管理

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

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

        对最新的一次提交进行打标签为v1.0;       

 

        也可以对之前提交进行打标签,只不过是要进行添加commit id;

        如下:

        标签的顺序是按照英文的顺序来进行排序的;

        对标签进行描述打标签:

        git tag -a v0.8 -m"ipmport tag v0.8" xxxxxx;

        查看描述信息:

删除标签:

        git tag -d v0.9

2.8 推送标签

        将本地的标签推送到远程仓库:git push origin v1.0

        推送所有标签:

        git push origin --tags

        论如何将本地的删除标签结果推送到中央仓库:

        git tag -d v1.0

        git push origin :v1.0

 

ps:本文到这里就结束了,谢谢观看!!! 

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

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

相关文章

微服务发布

微服务架构下的灰度发布、蓝绿发布和滚动发布 灰度发布(又名金丝雀发布) 不停机旧版本,部署新版本,低比例流量(例如:5%)切换到新版本,高比例流量(例如:95%)仍走旧版本。通过监控观察确认无问题,逐步扩大范围,慢慢的把所…

多IP访问多网段实验

文章目录 多IP访问多网段实验 多IP访问多网段实验 在当前主机配置多个IP地址,实现多IP访问多网段,记录所有命令及含义 1,环境搭建: [rootlocalhost ~]# mount /dev/sr1 /mnt # 设置ISO虚拟镜像文件文件挂载点,将…

数据分析和可视化python库orange简单使用方法

Orange 是一个基于 Python 的数据挖掘和机器学习库,它提供了一系列可视化工具和算法,用于数据分析、机器学习和数据可视化等任务。 一、主要特点 可视化界面:Orange 提供了直观的可视化界面,使得用户可以通过拖放操作构建数据分…

【python爬虫实战】爬取全年天气数据并做数据可视化分析!附源码

由于篇幅限制,无法展示完整代码,需要的朋友可在下方获取!100%免费。 一、主题式网络爬虫设计方案 1. 主题式网络爬虫名称:天气预报爬取数据与可视化数据 2. 主题式网络爬虫爬取的内容与数据特征分析: - 爬取内容&am…

算法(四)前缀和

前缀和也是一个重要的算法,一般用来快速求静态数组的某一连续区间内所有数的和,效率很高,但不支持修改操作。分为一维前缀和、二维前缀和。 重要的前言! 不要死记模板,具体题目可能是前缀和、前缀乘积、后缀和、后缀乘…

uniapp scroll-view翻转90度后,无法滚动问题,并设置滚动条到最底部(手写横屏样式)

uniapp scroll-view翻转90度后&#xff0c;无法滚动问题&#xff0c;并设置滚动条到最底部 <template><view class"main"><view style"height: 200px;"></view><view class"btn-main"><view class"send-…

二、Linux 入门教程:开启大数据领域的神奇之旅

Linux 入门教程&#xff1a;开启大数据领域的神奇之旅 在当今这个飞速发展的数字化时代&#xff0c;大数据所具有的重要性正日益凸显出来。而 Linux 作为一种极为强大的操作系统&#xff0c;在大数据这一广阔的领域当中发挥着至关重要、不可或缺的关键作用。倘若你怀有涉足大数…

已解决:ModuleNotFoundError: No module named ‘pip‘

[已解决] ModuleNotFoundError: No module named ‘pip‘ 文章目录 写在前面问题描述报错原因分析 解决思路解决办法1. 手动安装或升级 pip2. 使用 get-pip.py 脚本3. 检查环境变量配置4. 重新安装 Python 并确保添加到 PATH5. 在虚拟环境中安装 pip6. 使用 conda 安装 pip&…

无人机电机故障率骤降:创新设计与六西格玛方法论双赢

项目背景 TBR-100是消费级无人机头部企业推出的主打消费级无人机&#xff0c;凭借其出色的续航能力和卓越的操控性&#xff0c;在市场上获得了广泛认可。在产品运行过程&#xff0c;用户反馈电机故障率偏高&#xff0c;尤其是在飞行一段时间后出现电机过热、损坏以及运行不稳定…

《深度学习》dlib 人脸应用实例 仿射变换 换脸术

目录 一、仿射变换 1、什么是仿射变换 2、原理 3、图像的仿射变换 1&#xff09;图像的几何变换主要包括 2&#xff09;图像的几何变换主要分为 1、刚性变换&#xff1a; 2、仿射变换 3、透视变换 3&#xff09;常见仿射变换 二、案例实现 1、定义关键点索引 2、定…

OpenHarmony 入门——ArkUI 自定义组件内同步的装饰器@State小结(二)

文章大纲 引言一、组件内状态装饰器State1、初始化2、使用规则3、变量的传递/访问规则说明4、支持的观察变化的场景5、State 变量的值初始化和更新机制6、State支持联合类型实例 引言 前一篇文章OpenHarmony 入门——ArkUI 自定义组件之间的状态装饰器小结&#xff08;一&…

SRAM中的bit-write mask 和 word-write mask选项

1. 概念 bit-write mask&#xff1a; 定义&#xff1a;bit-write mask 允许在写操作中对单个字的每个位&#xff08;bit&#xff09;进行独立的控制。即&#xff0c;在写入操作时&#xff0c;特定的位可以被屏蔽&#xff0c;从而只修改需要变更的位&#xff0c;而不影响其它未…

东方通 TongRDS V2 配置与开机自启指南及 Spring Boot 集成

东方通 TongRDS V2 配置与开机自启指南及 Spring Boot 集成 文章目录 东方通 TongRDS V2 配置与开机自启指南及 Spring Boot 集成一 简述二 配置 cfg.xml1 启用密码访问2 Spring Boot 连接 TongRDS 三 配置 TongRDS 开机自启1 配置 RdsCenter1&#xff09;设置 RdsCenter.servi…

100多种【基于YOLOv8/v10/v11的目标检测系统】目录(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)

待更新(持续更新&#xff09;&#xff0c;早关注&#xff0c;不迷路............................................................................... 基于YOLOv8的车辆行人实时检测系统基于YOLOv10的车辆行人实时检测系统基于YOLOv11的车辆行人实时检测系统基于YOLOv8的农…

如何在UE5中创建加载屏幕(开场动画)?

第一步&#xff1a; 首先在虚幻商城安装好Async Loading Screen&#xff0c;并且在项目的插件中勾选好。 第二步&#xff1a; 确保准备好所需要的素材&#xff1a; 1&#xff09;开头的动画视频 2&#xff09;关卡加载图片 3&#xff09;准备至少两个关卡 第三步&#xff1a…

PythonExcel批量pingIP地址

问题&#xff1a; 作为一个电气工程师&#xff08;PLC&#xff09;&#xff0c;当设备掉线的时候&#xff0c;需要用ping工具来检查网线物理层是否可靠连接&#xff0c;当项目体量过大时&#xff0c;就不能一个手动输入命令了。 解决方案一&#xff1a; 使用CMD命令 for /L %…

Es全文检索

全文检索 将非结构化数据中的一部分信息提取出来&#xff0c;重新组织&#xff0c;使其变得有一定结构&#xff0c;然后对此有一定结构的数据进行搜索&#xff0c;从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息&#xff0c;我们称之索引。 …

二百六十八、Kettle——同步ClickHouse清洗数据到Hive的DWD层静态分区表中(每天一次)

一、目的 实时数仓用的是ClickHouse&#xff0c;为了避免Hive还要清洗数据&#xff0c;因此就直接把ClickHouse中清洗数据同步到Hive中就行 二、所需工具 ClickHouse&#xff1a;clickhouse-client-21.9.5.16 Kettle&#xff1a;kettle9.2 Hadoop&#xff1a;hadoop-3.1.3…

现代框架开发官网

一、项目背景 维护过 灵犀官网、企业邮官网、免费邮官网 均使用 jquery webpack多页面打包的方式 开发起来较为繁琐 新的官网项目&#xff0c;想使用现代前端框架&#xff0c;但SPA应用不利于SEO 使用SSR方案又依赖运维&#xff0c;增加维护和沟通成本 二、SSG vs 预渲染 S…

视频网站开发:Spring Boot框架的高效实现

5 系统实现 5.1用户信息管理 管理员管理用户信息&#xff0c;可以添加&#xff0c;修改&#xff0c;删除用户信息信息。下图就是用户信息管理页面。 图5.1 用户信息管理页面 5.2 视频分享管理 管理员管理视频分享&#xff0c;可以添加&#xff0c;修改&#xff0c;删除视频分…