【掌握版本控制:Git 入门与实践指南】操作仓库文件|分支管理

 

                                               🎬慕斯主页修仙—别有洞天

                                              ♈️今日夜电波:泥中に咲く—ウォルピスカーター

                                                                0:34━━━━━━️💟──────── 4:46
                                                                    🔄   ◀️   ⏸   ▶️    ☰  

                                      💗关注👍点赞🙌收藏您的每一次鼓励都是对我莫大的支持😍


 

目录

Git基本操作

查看修改操作

版本回退

工作区还没add,回退暂存区

已经add,没commit,回退版本库

已经 add ,并且也 commit,回退到上(一、二)版本

删除操作

分支管理

如何创建分支?

如何切换分支?

如何合并分支?

如何删除分支?

合并冲突问题

分支管理策略

如何通过分支处理bug?

删除临时分支分支


Git基本操作

查看修改操作

        我们可以通过如下命令得知git下文件是否有被修改:

git status

        该命令⽤于查看在你上次提交之后是否有对⽂件进⾏再次修改,如下:

        我们可以根据如下命令来查看差异:

git diff [file] //显⽰暂存区和⼯作区⽂件的
git diff HEAD -- [file] //查看版本库和⼯作区⽂件的

        例子:

        在这个diff中,--- 表示改动前,+++表为改动后,@@ -1 +1,2 @@表示了变化发生的位置。-1表示旧版本中的第一行,+1,2表示新版本中的第一行到第二行。

接着是具体的变化,-表示被删除的行,+表示被添加的行。在这个例子中,you can see me!是旧版本中的内容,而114514是新版本中新增的内容。

版本回退

我们可以使用以下的命令用于版本回退:

git reset [--soft | --mixed | --hard] [HEAD]
  1. --soft:仅回退HEAD指针,不改变暂存区和工作区。
  2. --mixed(默认模式):回退HEAD指针,同时重置暂存区,但保留工作区。
  3. --hard:回退HEAD指针,同时重置暂存区和工作区,丢弃所有更改。

        HEAD 说明:

可直接写成commit id,表⽰指定退回的版本

HEAD 表⽰当前版本

HEAD^ 上⼀个版本

HEAD^^上上⼀个版本

以此类推...

可以使⽤〜数字表⽰:

HEAD~0表⽰当前版本

HEAD~1上⼀个版本

HEAD^2上上⼀个版本

以此类推...

如下示例:


        如果我们回退错了,拿我们可以回退到之前提交的版本呢?

        使用如下命令查看记录本地的每⼀次命令 :

git reflog

        再使用如下命令来回退到对应的版本,这里就体现到我们commit时做的“标记”的作用了:

git reset --hard [commit id]

工作区还没add,回退暂存区

        通过如下命令可以让让⼯作区的⽂件回到最近⼀次 add 或 commit 时的状态 :

git checkout -- [file]

        如下:

已经add,没commit,回退版本库

git reset --mixed HEAD [file]

        如下:

已经 add ,并且也 commit,回退到上(一、二)版本

 git reset --hard HEAD^//(^根据要回退版本数量来决定)

        如下:

删除操作

        如果只是删除工作区和暂存库中的内容,可以使用以下命令:

git rm [file]

        如果想将版本库中也删除则再commit即可!

分支管理

如何创建分支?

        如下命令为查看以及创建分支:

git branch //查看,带上-a可看全部
git branch 分支名//创建对应的分支

        可以发现如果刚刚创建完分支,那么.git下会出现新的分支,并且 HEAD指向的是同一个修改。其中*表示为当前HEAD指向的分支。

        如何证明指向的是同一个修改:

        当我们新commit后,HEAD指向的分支跟着走:

如何切换分支?

        如下命令可以切换:

 git checkout 分支名

        在切换完成后,那么HEAD指向切换的分支,并且新commit会在该分支下:

        如下为图解:

如何合并分支?

        如下命令可以合并:

git merge 分支名

        需要注意的是:我们要合并在哪个分支上,首先要交让HEAD指向那个分支!例如:如下我要将maz分支合并到master上:

        图示如下:

如何删除分支?

        如下命令删除分支:

git branch -d 分支名

        如下图示:

        需要注意的是:因为创建、合并和删除分⽀⾮常快,所以Git⿎励你使⽤分⽀完成某个任务,合并后再删掉分⽀,这和直接在master分⽀上⼯作效果是⼀样的,但过程更安全。

合并冲突问题

        我们可以使用如下命令一步完成创建并且切换分支的操作:

git checkout -b 分支名

        在实际分⽀合并的时候,并不是想合并就能合并成功的,有时候可能会遇到代码冲突的问题,比如同一段代码:在master分支下位 aaa,另外一个分支下位 bbb。此时在合并时可能就会出现合并冲突的问题。Git会⽤<<<<<<<,=======, >>>>>>>来标记出不同分⽀的冲突内容 。此时我们必须要⼿动调整冲突代码,并需要再次提交修正后的结果!!

        如:根据提示提交对应的文件:如:add再commit。大致的图示如下:

        合并前:

        合并后:

        我们可以使用如下命令得到如上述图很像的分支情况:

git log --graph --pretty=oneline

分支管理策略

        通常我们在合并分支的时候,如果没有特意的指定合并模式,Git会采⽤ Fast forward 模式 。大致的合并效果如下(可以看到分支的信息并没有显示出来,删除分⽀后,查看分⽀历史时,会丢掉分⽀信息 ):


        上面我们提到的合并冲突是通过git log --graph --pretty=oneline指令很明显的看到与Fast forward 模式不同的效果,我们在删除了分支后如若可以在分⽀历史上就可以看出分⽀信息 。我们可以通过以下的选项强制禁用Fast forward 模式:

git merge --no-ff -m "阿巴阿巴" 分支名

        禁⽤ Fast forward 模式后合并会创建⼀个新的 commit ,所以加上 -m 参数,把描述写进去!

如何通过分支处理bug?

        假如我们现在正在 dev2 分⽀上进⾏开发,开发到⼀半,突然发现 master 分⽀上⾯有bug,需要解决 ,在Git中,每个bug都可以通过⼀个新的临时分⽀来修复,修复后,合并分⽀,然后将临时分⽀删除。 可现在 dev2 的代码在⼯作区中开发了⼀半,还⽆法提交,怎么办? 我们可以通过以下命令将当前的⼯作区信息进⾏储藏,被储藏的内容可以在将来某个时间恢复出来 :

git stash

        然后我们可切换到master分支上,新建一个分支来修复该bug,修复完成后合并master再删除该分支,那么我们此时还有回到dev2继续开发,因此切换回dev2分支,然后我们可以通过以下命令查看之前的工作现场去哪里了:

git stash list

        再通过以下命令恢复现场,并且把stash也删了:

 git stash pop

        也可以通过以下命令恢复现场,但是恢复后stash内容并不会被删除,而是需要额外的命令进行删除:

git stash apply 

        删除stash:

git stash drop

        但是我们在开发完成dev2分支的功能后并且提交后,发现我们之前修复的bug内容并没有在dev2上显示,大致示意:

        因为master分⽀⽬前最新的提交,是要领先于新建 dev2 时基于的 master 分⽀的提交的,所以我们在 dev2 中当然看不⻅修复bug的相关代码。我们最好不要直接merge到master上,这样其实是有⼀定⻛险的。解决这个问题的⼀个好的建议就是:最好在⾃⼰的分⽀上合并下 master ,再让 master 去合并dev,这样做的⽬的是有冲突可以在本地分⽀解决并进⾏测试,⽽不影响 master 。 大致的示意图:

删除临时分支分支

        如果我们要删除并没有合并的分支,那么平常使用的git branch -d 是不被允许的,我们可以使用以下的命令:

git branch -D 分支名

        该命令用于强制删除对应名的分支,即使该分支包含未合并的更改。请务必谨慎使用此命令,因为未合并的更改将会永久丢失。

 


                       感谢你耐心的看到这里ღ( ´・ᴗ・` )比心,如有哪里有错误请踢一脚作者o(╥﹏╥)o! 

                                       

                                                                        给个三连再走嘛~  

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

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

相关文章

揭秘反向代理:探索其神秘之处

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

141 Linux 系统编程18,线程,ps –Lf 进程 查看LWP,线程间共享数据,优缺点,编译加-lpthread,

一 线程概念 什么是线程 LWP&#xff1a;light weight process 轻量级的进程&#xff0c;本质仍是进程(在Linux环境下) 进程&#xff1a;独立地址空间&#xff0c;拥有PCB 线程&#xff1a;有独立的PCB&#xff0c;但没有独立的地址空间(共享) 区别&#xff1a;在于是否共…

【1688运营】如何拆解竞争对手店铺和单品数据?

关注竞争对手数据是1688运营中不可或缺的一环&#xff0c;它有助于企业更好地了解市场环境、发现市场机会、学习成功经验、预测市场变化以及提升竞争力。以下是一些建议&#xff0c;帮助你全面、深入地分析竞争对手的店铺和单品数据&#xff1a; 1、监控店铺数据 可以通过店雷…

Docker部署黑马商城项目笔记

部署后端 创建mysql目录如下&#xff0c;上传对应的文件 运行以下命令 docker run -d \--name mysql \-p 3306:3306 \-e TZAsia/Shanghai \-e MYSQL_ROOT_PASSWORD123 \-v ./mysql/data:/var/lib/mysql \-v ./mysql/conf:/etc/mysql/conf.d \-v ./mysql/init:/docker-entry…

mac redis启动,redis哨兵模式,redis集群的相关命令

Homebrew安装的软件会默认在/usr/local/Cellar/路径下 redis的配置文件redis.conf存放在/usr/local/etc路径下 cd /usr/local/Cellar/redis/7.0.10. 存在 cd /usr/local/opt/redis/bin/redis-server. 目录存在 cd /usr/local/etc/redis.conf 存在。配置文件 复制文件 cp …

深入浅出计算机网络 day.1 概论④ 计算机网络的定义和分类

不要退却&#xff0c;要绽放魅力 我的心会共鸣 和你 —— 24.3.9 一、计算机网络的定义 计算机网络早期的一个最简单定义 现阶段计算机网络的一个较好的定义 二、计算机网络的分类 按交换方式分类 按使用者分类 按传输介质分类 按覆盖范围分类 按拓扑结构分类&#xff0c;可…

2m高分辨率土地利用分类矢量数据/植被类型分布数据

土地利用数据是在根据影像光谱特征&#xff0c;结合野外实测资料&#xff0c;同时参照有关地理图件&#xff0c;对地物的几何形状&#xff0c;颜色特征、纹理特征和空间分布情况进行分析&#xff0c;建立统一解译标志的基础之上&#xff0c;依据多源卫星遥感信息&#xff0c;结…

细粒度IP定位参文2(Corr-SLG):A street-level IP geolocation method (2021年)

[2]S. Ding, F. Zhao, and X. Luo, “A street-level IP geolocation method based on delay-distance correlation and multilayered common routers,” Secur. Commun. Netw., vol. 2021, no. 1, pp. 1–10, 2021. 智能设备的地理位置可以帮助提供多媒体内容提供商和5G网络中…

数据结构中的堆(Java)

文章目录 把普通数组转换大顶堆数组堆增删改查替换堆排序 把普通数组转换大顶堆数组 该方式适用索引为0起点的堆 在堆&#xff08;Heap&#xff09;这种数据结构中&#xff0c;节点被分为两类&#xff1a;叶子节点&#xff08;Leaf Nodes&#xff09;和非叶子节点&#xff08;N…

Spring事务及事务传播机制

目录 一、什么是事务 二、事务的操作 三、Spring下实现事务 1、Spring编程式事务 &#xff08;1&#xff09;事务提交 &#xff08;2&#xff09;事务回滚 2、Spring声明式事务 &#xff08;1&#xff09;无异常--提交 &#xff08;2&#xff09;异常且不捕获--回滚 …

电机特性学习

电机特性 电机堵转&#xff1a; 电机堵转的原理 玻璃升降器&#xff1a; 工作电压 升降器在 9V~16V 电压下应运行平稳,不允许有异音和卡滞现象。 工作电流 升降器的工作电流不大于 12A,堵转电流不大于 28A。 堵转 力 升降器 堵转 力应 不小于 212N。 玻璃升降器结构 电动车窗…

删除数据表

oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 删除数据表属于数据库对象的操作 drop table 表名称; 删除 emp30 表 SQL> drop table emp30;表已删除。 上面这个语句运行后&#xff0c;就会把数据表 emp30 删除 在…

一起玩儿3D打印机——01 3D打印机初探

摘要&#xff1a;本文介绍3D打印技术的基本知识以及3D打印机的结构分类和组成 3D打印技术这几年得到了快速的发展&#xff0c;在一些特定领域和特定行业逐渐被越来越多的人所接受并大量使用。与之相关的供应链和产业链也日益壮大&#xff0c;并形成了完善的体系。 这次之所以…

蓝桥杯刷题7

目录 1. 字母数 2. 列名 3. 大乘积 4. 最大连通 5. 星期几 1. 字母数 public class Main {public static void main(String[] args) {int num 2023;while(true) {String mInteger.toString(num,16);if(m.matches("^[a-f]$")){System.out.println(num);break;}n…

Linux环境安装配置JDK11

文章目录 第一步&#xff1a;上传JDK11安装包第二步&#xff1a;解压安装包第三步&#xff1a;修改环境变量第四步、测试是否安装成功总结 JDK 11 是 Java 开发工具包&#xff08;Java Development Kit&#xff09;的一个版本&#xff0c;它是由 Oracle 公司开发和发布的。以下…

集成Mybatis Generator dao层代码生成

Mybatis Generator dao层代码生成 介绍 我们在使用mybatis开发的时候&#xff0c;需要去写表的基本的crud&#xff0c;这些咱们通常定义到dao层里面去&#xff0c;而mybatis generator可以帮我们把这件事情自动完成&#xff0c;大大节省时间并且可以规范dao层的代码。 sprin…

关于并发编程的一些总结

并发编程 1.synchronized是什么&#xff1f; synchronized是Java中的一个关键字&#xff0c;主要是为了解决多个线程访问共享资源的同步性&#xff0c;可以保证被它修饰的代码块或方法在任何时间至多只有一个线程执行。 2.synchronized的进化史? 在早期Java版本中&#xf…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的火焰检测系统(Python+PySide6界面+训练代码)

摘要&#xff1a;本研究详述了一种采用深度学习技术的火焰检测系统&#xff0c;该系统集成了最新的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等早期算法进行了性能评估对比。该系统能够在各种媒介——包括图像、视频文件、实时视频流及批量文件中——准确地识别火焰目…

数据分析-Pandas如何观测数据的中心趋势度

数据分析-Pandas如何观测数据的中心趋势度 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据…

一篇论文回顾 Sora 文生视频技术的背景、技术和应用。

一篇论文回顾 Sora 文生视频技术的背景、技术和应用。 追赶 Sora&#xff0c;成为了很多科技公司当下阶段的新目标。研究者们好奇的是&#xff1a;Sora 是如何被 OpenAI 发掘出来的&#xff1f;未来又有哪些演进和应用方向&#xff1f; Sora 的技术报告披露了一些技术细节&…