从0到1学会Git(第二部分):Git的本地操作和管理

写在前面:本文介绍了在本地仓库进行文件的处理以及本地的合并等操作。

前置知识:文件可以处在三个区域,分别为工作区,暂存区和本地仓库,我们此文的目标即是将文件存储在本地仓库中。我们可以将文件的区域理解为,cpu中,内存中,外存中。我们最终的目的是为了将处理的文件和数据放在"外存中",方便我们进行管理。即工作区->cpu中,暂存区->内存中,本地仓库->外存中。

1.本地仓库的搭建

1.1使用命令:
git init
1.2操作流程:

我们先找到(或者新建一个)一个文件夹,作为我们本地的Git仓库目录
在这里插入图片描述
进入到这个文件夹以后,打开gitbash界面(右键gitbash)。执行1.1所使用的命令。
在这里插入图片描述
然后我们可以使用ll指令来看一下是否创建成功。可以看到,我们已经创造了一个.git文件夹,表示我们的git本地仓库已经创建完毕了
效果如下:

2.新建一个文件提交到本地仓库

所使用到的命令(我们假设我们所提交的文件为file01.txt):

git add file01.txt
//也可以使用下列方式,把所有的文件都放到暂存区中
git add .
git commit -m 'test'

使用流程:
首先需要知道的是,在与本地仓库操作有关的过程中,文件可以位于三个区域,分别为工作区,暂存区,仓库(需要记住,很重要)。我们在对文件进行编辑的时候我们的文件位于工作区,对文件的建立和删除等,我们的操作都位于工作区,然后我们使用add可以将其提交到暂存区,使用commit操作可以将其放到我们的本地仓库中来。
首先使用git add file01.txt将文件放到暂存区中来,然后我们可以使用git status指令来看一下我们文件所处的状态,可以看到以下效果图
在这里插入图片描述
然后我们可以使用git commit -m “xxxx"将我们放在暂存区的文件放到仓库中来。后面的”"里面的内容表示的是注释的意思,即我们将其提交以后,以后在进行查找的时候,可以知道这次提交的一些注释。比如下图中的add file1表示的就是我们这次操作的目的是新增了一个文件file1进来
在这里插入图片描述
然后我们就已经将数据提交到本地仓库里了
在这里插入图片描述
再次使用git status我们可以发现,暂存区中已经没有数据了。

3.查看文件数据和相关的信息

git log

在这里插入图片描述

4.修改文件并提交到本地仓库

使用指令同第2部分:

git add file01.txt
//也可以使用下列方式,把所有的文件都放到暂存区中
git add .//
git commit -m 'test'

首先我们打开我们的file01.txt文件,然后在里面输入以下语句,然后进行保存。
在这里插入图片描述
然后我们使用指令来查询一波

git status

可以看到我们的文件再次进入到了工作区
在这里插入图片描述

然后我们将其加入到暂存区

git add .

在这里插入图片描述
可以看到我们已经把数据添加到了暂存区
然后我们将数据提交到本地仓库

git commit -m "update file01"

在这里插入图片描述
可以看到我们的数据已经提交完成了

5.查看提交文件日志

使用到的命令:

git log [option]
option值效果
–all显示所有分支
–pretty=oneline将提交信息显示为一行
–abbrev-commit使得输出的commitId更简短
–graph以图片的形式进行显示
–decorate新版git默认自带的,如果是mac本,需要加上这个

6.版本回溯

使用到的命令:

git reset --hard commitID

使用流程:
其中的commitId可以使用git-log或者git log来进行查看
我们首先查看我们的commitID(前面的e5775cf就是我们的commitID)
在这里插入图片描述
然后进行还原到初始状态
在这里插入图片描述
再次打开file01.txt文件查看
在这里插入图片描述
可以看到我们的文件已经恢复到初始状态了

7.设置不被git管理的文件

使用到的命令:

touch .gitignore

使用过程:
首先我们在文件夹下面创建一个新的文件,使用touch .gitignore。
然后可以使用下面的指令也可以自己右键新建一个文件

touch file02.a

然后我们使用编辑器(vi或者vim或者txt文本编辑器都可)在.gitignore文件里面进行编辑
在这里插入图片描述
输入完成后退出保存
使用git status查看状态
在这里插入图片描述
发现我们的file02.a不在状态中,即实现了被忽律的效果

8.Git分支常用指令

使用到的命令:

git branch
git branch dev01
git checkout dev01 //切换分支命令

使用流程:
如何查看我们有几个分支:git branch
如何创建一个新的分支:git branch dev01。注意,虽然我们创建了一个新的分支,但是我们没有跳转到这个新的分支,仍然位与我们之前的分支上面。
我们首先创建一个新的分支。
可以查看到,我们现在有两个分支
在这里插入图片描述
如何查看分支上的操作(这个git-log是在第一篇文章里面讲到的集成操作,即使用一个简便的代表指令可以表示更多的效果):

git-log

我们新建一个file2.txt文件,并把它上传到本地仓库,然后查看分支的情况,可以看到以下情况。
在这里插入图片描述
发现我们的文件只传到了master这个分支,而没有传到dev01分支。我们打开我们的文件夹(此时位于master分支下面),可以看到以下效果:
在这里插入图片描述
我们可以看到现在master下面有这些文件,然后我们切换到dev01分支
使用下列命令进行切换

git checkout dev01

其中dev01就是你所想要切换到的分支方向,可以看到如下效果:
在这里插入图片描述
可以看到,我们刚刚所新建的file2.txt文件在dev01分支下并没有存在

9.分支合并

使用命令:

git merge 分支名称(b分支的名称)

使用流程:
当位于a分支时,如果需要将b分支下面的文件和代码合并到分支a里面来,使用git merge b 即可。

10.删除分支

比如我们需要删除b1分支,可以使用以下命令:

git branch -d b1

如果删除不了,使用强制删除

git branch -D b1

使用-D的场景,比如我们在a的分支下创造了一个a.txt文件,并且将它提交到了本地仓库,但是我们并没有把这个分支和master分支进行合并,然后我们直接将a分支进行删除,他就会报错,因为他会理解为你的文件还没有上传到master分支,属于是误操作,这个时候需要删除分支的话,就需要使用-D来进行删除

11.分支冲突问题解决

冲突问题:当a分支下对文件a的第一行加了一个字,而b分支对文件a的第一行加了两个字,我们在进行合并的时候就会出现分支错误。
个人心得(仅供参考):当我们将b分支合并到a分支的时候,如果出现了冲突报错,其实我们此时已经完成了合并到了工作区的工作。因为有冲突,所以他默认你需要对冲突进行处理,所以没有直接合并到本地仓库,而是直接合并到了工作区。他会把冲突的部分的代码全部留下来,让作者进行抉择,此时直接提交到暂存区和本地仓库即可实现分支的合并,如果需要处理,也可以在文件中处理完毕再提交到本地仓库。
实战解决流程:
我们直接在这里创建一个新的分支(使用-b即如果没有这个分支,我们直接创建一个新的分支并跳转到这个分支)

git checkout -b dev

首先我们位与dev分支下面,我们切换到master分支,我们打开file01.txt文件
将里面的句子改成如下:
在这里插入图片描述
保存之后退出
然后查看完状态后,我们将其提交到我们的本地仓库
然后我们切换到我们的dev分支下面来,打开我们的file01.txt文件进行查看,可以看到里面的内容如下:
在这里插入图片描述
在这里插入图片描述
属于默认的file01.txt的状态,我们将其改成如下,
在这里插入图片描述
保存之后我们上传到我们的本地仓库

在这里插入图片描述
现在我们可以看到,dev和master属于两个不同的分支,他们没有被合并到一起。
然后我们切换到master下面,将我们的dev分支合并到master下面来

git merge dev

可以看到,我们的合并失败了
在这里插入图片描述
根据提示可以知道,我们的file01.txt文件在合并的时候发生了冲突,导致了合并失败。
我们打开file01.txt文件,可以看到里面发生了变化,已经变成了这个样子。
在这里插入图片描述
HEAD表示的是当前的分支,dev分支表示的是dev分支
我们直接在里面修改并保存我们想要的内容
在这里插入图片描述
然后在add和commit一下,即可完成分支的冲突和并问题。
可以看到,我们已经实现了分支的合并。

在这里插入图片描述

码字不易,点个赞再走吧

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

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

相关文章

计算机视觉主要任务

计算机视觉:使用计算机及相关设备对生物视觉的一种模拟。 主要包含6大任务,图像分类,目标检测,目标跟踪,语义分割,实例分割,影像重构。 图像分类:根据图像信息中所反映的不同特征&am…

数据结构与算法复杂度介绍

目录 一、基本概念 二、时间复杂度 【2.1】时间复杂度概念 【2.2】大O的渐进表示法 【2.3】举例时间复杂度计算 三、空间复杂度 一、基本概念 数据结构:相互之间存在一种或者多种特定关系的数据元素的集合。在逻辑上可以分为线性结构,散列结构、树…

Redis List类型命令 - Set类型命令 - SortedSet类型命令

目录 List类型 什么是双向链表呢? List类型的特征: List的常用命令 LPUSH和RPUSH的区别: LPOP和RPOP的区别: LPUSH和RPUSH的使用 LPOP和RPOP的使用 LRANGE key star end:返回一段距离范围内所有的元素 BLPOP…

最小生成树Kruskal、Prim算法C++

什么是最小生成树 连通图: 在无向图中,若从顶点v1到顶点v2有路径,则称顶点v1和顶点v2是连通的。如果图中任意一对顶点都是连通的,则称此图为连通图。 生成树: 一个连通图的最小连通子图称作为图的生成树。有n个顶点的…

Pytorch 的基本概念和使用场景介绍

文章目录 一、基本概念1. 张量(Tensor)2. 自动微分(Autograd)3. 计算图(Computation Graph)4. 动态计算图(Dynamic Computation Graph)5. 变量(Variable) 二、…

【用unity实现100个游戏之8】用Unity制作一个炸弹人游戏

文章目录 前言素材开始一、绘制地图二、玩家设置三、玩家移动四、玩家四方向动画运动切换 五、放置炸弹六、生成爆炸效果七、墙壁和可破坏障碍物的判断八、道具生成和效果九、玩家死亡十、简单的敌人AI十一、简单敌人AI十二、随机绘制地图十三、虚拟摇杆 最终效果待续源码完结 …

2023年行研行业研究报告

第一章 行业概述 1.1 行研行业 行业定义为同一类别的经济活动,这涉及生产相似产品、应用相同生产工艺或提供同类服务的集合,如食品饮料行业、服饰行业、机械制造行业、金融服务行业和移动互联网行业等。 为满足全球金融业的需求,1999年8月…

Linux之autofs自动挂载服务

目录 Linux之autofs自动挂载服务 产生原因 安装 配置文件分析 文件路径 作用 etc/auto.master文件内容格式 挂载参数 案例 案例1 --- 服务器创建共享目录,客户端实现自动挂载 案例2 --- 自动挂载光盘 Linux之autofs自动挂载服务 产生原因 在一般NFS文件系…

$attrs,$listeners

vue实现组件通信的方式有: 父子通信 父组件向子组件传递通过props定义各个属性来传递,子组件向父组件传递通过$emit触发事件 ref也可以访问组件实例跨级通信 vuex bus provide / inject $attrs / $listeners解释 $attrs / $listeners $attrs 将父组件中…

服务端请求伪造(SSRF)及漏洞复现

文章目录 渗透测试漏洞原理服务端请求伪造1. SSRF 概述1.1 SSRF 场景1.1.1 PHP 实现 1.2 SSRF 原理1.3 SSRF 危害 2. SSRF 攻防2.1 SSRF 利用2.1.1 文件访问2.1.2 端口扫描2.1.3 读取本地文件2.1.4 内网应用指纹识别2.1.5 攻击内网Web应用 2.2 SSRF 经典案例2.2.1 访问页面2.2.…

自然语言处理实战项目17-基于多种NLP模型的诈骗电话识别方法研究与应用实战

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目17-基于NLP模型的诈骗电话识别方法研究与应用,相信最近小伙伴都都看过《孤注一掷》这部写实的诈骗电影吧,电影主要围绕跨境网络诈骗展开,电影取材自上万起真…

基于Java+SpringBoot+Vue前后端分离善筹网(众筹)设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

vue3在路由route.js中获取不到仓库pinia中store里面的值

原因:小仓库(useUserStore )必须有大仓库(pinia)才能运行,在组件中能使用pinia仓库的数据,是因为在main.ts中已经在vue上面挂载了大仓库(pinia),但是route.js不是vue组件,没有被挂载大仓库,所以不能运行 解…

使用(七牛云)为例子实现将文件上传到云服务器

目的 目前,用户的头像、分享生成的长图等文件都是存放在本地的,我们可以将他们存放在云服务器中,此处我们使用七牛云作为例子示范。 七牛云 创建账户并申请如下的两个bucket,分别是用户头像的存储空间和分享长图的存储空间。 …

数据库设计DDL

DDL:数据定义语言,用来定义数据库对象(数据库、表) DDL(数据库操作) 查询: 查询所有数据库:show databases; 查询当前数据库:select database(); 使用: 使用…

Python 之 match 表达式

Python 从 3.10 版本开始增加了 match 语句,和其他语言常见的 switch 语句极其相似,但功能更加强大。 本文通过实例,了解下其用法。 基本的 match 语句 def http_code(status): match status: case 400 | 404 | 418: …

java八股文面试[JVM]——JVM性能优化

JVM性能优化指南 JVM常用命令 jps 查看java进程 The jps command lists the instrumented Java HotSpot VMs on the target system. The command is limited to reporting information on JVMs for which it has the access permissions. jinfo (1)实时…

AIGC专栏3——Stable Diffusion结构解析-以图像生成图像(图生图,img2img)为例

AIGC专栏3——Stable Diffusion结构解析-以图像生成图像(图生图,img2img)为例 学习前言源码下载地址网络构建一、什么是Stable Diffusion(SD)二、Stable Diffusion的组成三、img2img生成流程1、输入图片编码2、文本编码…

SpringCloud(35):Nacos 服务发现快速入门

本小节,我们将演示如何使用Spring Cloud Alibaba Nacos Discovery为Spring cloud 应用程序与 Nacos 的无缝集成。 通过一些原生的spring cloud注解,我们可以快速来实现Spring cloud微服务的服务发现机制,并使用Nacos Server作为服务发现中心,统一管理所有微服务。 1 Spring…

vue3中TCplayer应用

环境win10:vitevue3elementUI 1 安装 npm install tcplayer.js2 使用 <template><div><video id"player-container-id" width"414" height"270" preload"auto" playsinline webkit-playsinline></video>&l…