从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一下,即可完成分支的冲突和并问题。
可以看到,我们已经实现了分支的合并。
码字不易,点个赞再走吧
相关文章:

从0到1学会Git(第二部分):Git的本地操作和管理
写在前面:本文介绍了在本地仓库进行文件的处理以及本地的合并等操作。 前置知识:文件可以处在三个区域,分别为工作区,暂存区和本地仓库,我们此文的目标即是将文件存储在本地仓库中。我们可以将文件的区域理解为,cpu中,…...

hive lateral view 实践记录(Array和Map数据类型)
目录 一、Array 1.建表并插入数据 2.lateral view explode 二、Map 1、建表并插入数据 2、lateral view explode() 3、查询数据 一、Array 1.建表并插入数据 正确插入数据: create table tmp.test_lateral_view_movie_230829(movie string,category array&…...

理解 std::thread::join
C多线程并发编程入门(目录) 本文用最简单易懂的实际案例,讲清楚了 join 的实际内涵,保证你过目不忘。 Hello join 示例 join 函数是我们接触C多线程 thread 遇到的第一个函数。 比如: int main() {thread t(f);t.…...

C#循环定时上传数据,失败重传解决方案,数据库标识
有些时候我们需要定时的上传一些数据库的数据,在数据不完整的情况下可能上传失败,上传失败后我们需要定时在重新上传失败的数据,该怎么合理的制定解决方案呢?下面一起看一下: 当然本篇文章只是提供一个思路࿰…...

R语言图形的组合( par(),layout(),par(fig()) )
引入d.class进行画图 > d.class<-read.csv("D://class.csv",header T) > attach(d.class) > opar<-par(no.readonly TRUE)非常简单的数据,需要可自取 链接:https://pan.baidu.com/s/1zNx5z9JsaaRqFueRgGY3mQ 提取码&#x…...

如何为 Flutter 应用程序创建环境变量
我们为什么需要环境变量? 主要用于存储高级机密数据,如果泄露可能会危及您产品的安全性。这些变量本地存储在每个用户的本地系统中,不应该签入存储库。每个用户都有这些变量的副本。 配置 在根项目中创建一个名为 .env 的文件夹(…...

「C++程序设计 (面向对象进阶)」学习笔记・一
0、引言 本专栏的系列文章是在学习 北京邮电大学 崔毅东 老师的《C程序设计 (面向对象进阶)》课程过程中整理的。欢迎前往专栏了解更多相关内容~ 😀 有关于现代 C 的基本介绍,请前往《现代C基本介绍》! 🔔 先决条件 本专栏的系列…...

Leetcode125. 验证回文串
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&…...

【Yellowbrick】特征可视化分析
Yellowbrick特征可视化分析 ⭐Yellowbrick⭐特征分析可视化⭐Rank1D⭐Rank2D ⭐Yellowbrick Yellowbrick是一个用于可视化机器学习模型和评估性能的Python库。它提供了一系列高级可视化工具,帮助数据科学家和机器学习从业者更好地理解、调试和优化他们的模型。 它在…...

Android大厂需要刷的(999道)面试题
想必大家都在为今年的金九银十做准备,今年也是最为艰难的一年。作为程序员从未感觉到如此艰难,身边不是被辞退就是找不到工作。先不说2023年应届生毕业即失业,作为开发15年的老Android程序员,现在也在和300个人挣一个岗位。 肉少…...

Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
不论搭建什么工程,运行什么文件,只要在Pycharm中出现ImportError: DLL load failed: 找不到指定的模块这样的问题,以下方法都适用!!! 一、问题描述 我在使用pycharm连接webots,用python控制机…...

Java设计模式:四、行为型模式-08:策略模式
文章目录 一、定义:策略模式二、模拟场景:策略模式三、违背方案:策略模式3.0 引入依赖3.1 工程结构3.2 优惠券折扣计算类3.3 单元测试 四、改善代码:策略模式4.1 工程结构4.2 策略模式结构图4.3 优惠券折扣实现4.3.1 定义优惠券接…...

ICCOA蓝牙数字车钥匙2.0
近期,ICCOA智慧车联开放联盟宣布,由小米、vivo、OPPO、长安、深蓝、吉利、极氪、比亚迪、北汽、蔚来、零跑、雪球、瓶钵、融卡等企业联合参与制定的ICCOA蓝牙数字车钥匙2.0标准(简称DK2.0),于2023年9月1日正式发布实施…...

ArcGIS土地利用程度综合指数分析
成图展示: 土地利用程度综合指数 第一步 准备数据 使用的数据为2010年河南省土地利用类型数据与其行政区划县级数据(为了节省操作,这里使用上次实验的部分数据[1],各土地利用类型已被提取) 第二步 面积统计 水域为例…...

服务端请求伪造(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.…...

v-model和v-bind
v-model,它其实就是一个语法糖,作用就是双向绑定表单控件(radio, text,address,email,select,checkbox,textarea) v-bind(简写形式:value值),用于绑定属性值,只能实现数据的单项绑定。 <template> <div>…...

详细介绍 弹性盒子(display:flex)
文章目录 什么是弹性盒子 如何使用弹性盒子flex系列flex-direction 对齐方向 水平对齐垂直对齐flex-wrap 换行flex-flowflex模型说明容器的属性 justify-content X轴对齐方式align-content Y轴对齐方式总结属性值Y轴对齐的另外一种:align-itemsalign-content和alig…...

Docker使用数据卷挂载进行数据存储与共享
一、挂载和数据卷 在 Docker 中,挂载(Mounting)和数据卷(Data Volumes)是用于在容器和宿主机之间共享数据的机制。 挂载:将宿主机文件系统中的目录或文件与容器中的目录或文件进行关联的过程。数据卷&…...

[力扣146. LRU 缓存 ](https://leetcode.cn/problems/lru-cache/description/)
力扣146. LRU 缓存 使用LinkedHashmap(HashMap的子类,能够记住插入数据的顺序). LRU是Lease Recently User的缩写,意思是最近 最少使用。比如设计一个文件缓存系统,每个文件有自己的大小和访问时间,文件缓存系统有总的大小&…...

Mysql存储引擎
目录 一、前言 二、存储引擎 1、InnoDB存储引擎 1.1、简介 1.2、优势 1.3、使用方法 1.4、性能 2、MyISAM存储引擎 2.1、优势 2.2、使用方法 2.3、性能 3、MEMORY存储引擎 4、MyISAM 三、比较 四、总结 一、前言 MySQL是开放源代码的关系型数据库管理系统&…...

算法通关村-----数组实现加法专题问题解析
数组实现整数加法 问题描述 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。详见leetcode66 问题…...

倒排表的压缩算法
For压缩算法 这是倒排表的一种压缩算法。 还是那个问题,如果"小米" 这个词项,在多文档里都有,则就会导致倒排表很大,这时候就会设计到了压缩算法,这里说的是,倒排表。 那末我们来看看 for压缩…...

Android studio实现自定义圆形进度条 带刻度进度条 计步效果 时速表 水波纹效果
目录 原文链接效果图values /layout /activity原文链接 效果图 点击重置后: 该项目总共实现了三种圆形进度条效果 CircleProgress:圆形进度条,可以实现仿 QQ 健康计步器的效果,支持配置进度条背景色、宽度、起始角度,支持进度条渐变DialProgress:类似 CircleProgress,…...

使用【宝塔+docker】在云服务器上部署基于SpringBoot 和 Dubbo RPC 的项目:踩坑记录
待部署的项目包括:前端front,服务提供者backend,服务消费者gateway,注册中心nacos 服务器信息:腾讯云入门级服务器2核2G(后续有对服务器进行升级) 部署工具:前端使用宝塔部署&#x…...

【算法与数据结构】617、LeetCode合并二叉树
文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:采用递归的方式遍历二叉树,【算法与数据结构】144、94、145LeetCode二叉树的前中后遍历&am…...

ffmpeg把RTSP流分段录制成MP4,如果能把ffmpeg.exe改成ffmpeg.dll用,那音视频开发的难度直接就降一个维度啊
比如,原来我们要用ffmpeg录一段RTSP视频流转成MP4,我们有两种方案: 方案一:可以使用以下命令将rtsp流分段存储为mp4文件 ffmpeg -i rtsp://example.com/stream -vcodec copy -acodec aac -f segment -segment_time 3600 -reset_t…...

朝夕光年游戏自动化测试实践
朝夕光年是面向全球用户与开发者的游戏研发与发行业务品牌,致力于服务全球玩家,帮助玩家在令人惊叹的虚拟世界中一起玩耍与创造。 在游戏的研发过程中,游戏自动化一直是开展难度较大的工程,具体包括机房机架、设备调度、软件框架、…...

数据结构基本概念
一、数据 数据对象-数据元素-数据项(属性),前者由后者组成 二、数据结构 定义:按某种关系的数据元素的集合 三、数据类型 1、原子类型(例如整型) 2、结构类型(由原子类型组成,例如数组) 3、…...

【javaweb】学习日记Day9 - Mybatis 基础操作
目录 一、删除 (1)在mapper接口执行sql删除语句 ① 注解后sql语句没有提示怎么办? (2)测试层 (3)开启mybatis日志 (4)预编译SQL 二、新增 (1&#…...

Mybatis学习|Mybatis缓存:一级缓存、二级缓存
Mybatis缓存 MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。 MyBatis系统中默认定义了两级缓存:一级缓存和二级缓存 默认情况下,只有一级缓存开启。(SqlSession级别的缓存,也称为本地…...