从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.rhkb.cn/news/120019.html

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

相关文章

UDP和TCP协议报文格式详解

在初识网络原理(初识网络原理_蜡笔小心眼子!的博客-CSDN博客)这篇博客中,我们简单的了解了一下TCP/IP五层网络模型,这篇博客将详细的学习一下五层网络模型中传输层的两个著名协议:UDP和TCP 目录 一, 传输层的作用 二, UDP 1,UDP协议的特点 2,UDP报文格式 三, TC…

Python爬取天气数据并进行分析与预测

随着全球气候的不断变化,对于天气数据的获取、分析和预测显得越来越重要。本文将介绍如何使用Python编写一个简单而强大的天气数据爬虫,并结合相关库实现对历史和当前天气数据进行分析以及未来趋势预测。 1 、数据源选择 选择可靠丰富的公开API或网站作…

视频监控/视频汇聚/视频云存储EasyCVR平台接入华为ivs3800平台提示400报错,该如何解决?

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,视频云存储/安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频…

垃圾回收 - 复制算法

GC复制算法是Marvin L.Minsky在1963年研究出来的算法。说简单点,就是只把某个空间的活动对象复制到其它空间,把原空间里的所有对象都回收掉。这是一个大胆的想法。在此,我们将复制活动对象的原空间称为From空间,将粘贴活动对象的新…

Flink---1、概述、快速上手

1、Flink概述 1.1 Flink是什么 Flink的官网主页地址:https://flink.apache.org/ Flink的核心目标是“数据流上有状态的计算”(Stateful Computations over Data Streams)。 具体说明:Apache Flink是一个“框架和分布式处理引擎”,用于对无界…

面试总结 - 计算机网络

计算机网络 1 OSI 七层模型 | TCP与UDP | 响应状态码 OSI 模型 应用层: 计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。 HTTP SMTP FTP DNS 表示层: 负责数据格式的转换&…

算法笔记:二叉树

1 基本二叉树 二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为“左子节点”和“右子节点”。 二叉树的根是唯一没有父节点的节点,而所有其他节点都有一个父节点和零个或两个子节点。 1.1 基础术语 节点(Node&…

ApiPost7使用介绍 | HTTP Websocket

一、基本介绍 创建项目(团队下面可以创建多个项目节点,每个项目可以创建多个接口): 参数描述库(填写参数时自动填充描述): 新建环境(前置URL、环境变量很有用)&#x…

【GitLab私有仓库】在Linux上用Gitlab搭建自己的私有库并配置cpolar内网穿透

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 前言 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具&#xf…

【搭建私人图床】使用LightPicture开源搭建图片管理系统并远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进,功能也越来越多,而手机…

【STM32】学习笔记-SPI通信

SPI通信 SPI通信(Serial Peripheral Interface)是一种同步的串行通信协议,用于在微控制器、传感器、存储器、数字信号处理器等之间进行通信。SPI通信协议需要使用4个线路进行通信:时钟线(SCLK)、主输入/主输出线(MISO)、主输出/主…

算法leetcode|76. 最小覆盖子串(rust重拳出击)

文章目录 76. 最小覆盖子串:样例 1:样例 2:样例 3:提示:进阶: 分析:在这里插入图片描述 题解:rust:go:c:python:java: 76.…

马斯克谈 Facebook 不开源算法

导读虽然马斯克与扎克伯格的 “八角笼中” 之约没有达成,但很显然,马斯克并不打算就此罢休。既然没能在线下大战一场,那自然不会错过在线上 “出招” 的机会。 他转发了一则推文,并说道:“在地球上,Facebo…

【【萌新的STM32学习25--- USART寄存器的介绍】】

萌新的STM32学习25- USART寄存器的介绍 STM32–USART寄存器介绍(F1) 控制寄存器1 (CR1) 位13: 使能USART UE 0: USART分频器和输出被禁止 1: USART模块使能 位12 : 配置8个数据位…

chrono学习(一)

我想用chrono进行沙土的仿真,首先学习demo_GPU_ballCosim.cpp,这个例子仿真了一些沙土的沉降过程。 首先,运行编辑完成的文件demo_GPU_ballCosim: (base) eowyneowyn-MS-7D20:~/build_chrono/bin$ ./demo_GPU_ballCosim 运行完得…

mac常见问题(三) macbook键盘溅上水怎么办?

多朋友在使用mac的时候难免会发生一些小意外,例如说本期要为大家说的macbook键盘溅上水或者其他的液体怎么办?不清楚的同学赶快get这项技能吧! 如果你不小心给你的MacBook键盘上溅了水或者其他液体,你需要超级快的把表面的液体清理…

【Java】关于JDK 8的HashMap

文章目录 HashMap 简介数据结构Hash构造方法get(key)方法步骤一:通过key获取所在桶的第一个元素是否存在步骤二:该节点的hash和key是否与要查询的hash和key匹配步骤三:当对应桶中不止一个节点时,根据不同节点类型查询 put(key,value)为什么树化&#xff…

l8-d6 socket套接字及TCP的实现框架

一、socket套接字 /*创建套接字*/ int socket(int domain, int type, int protocol); /*绑定通信结构体*/ int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); /*监听套接字*/ int listen(int sockfd, int backlog); /*处理客户端发起的连接&#xff0…

WorldCoin 运营数据,业务安全分析

WorldCoin 运营数据,业务安全分析 Worldcoin 的白皮书中声明,Worldcoin 旨在构建一个连接全球人类的新型数字经济系统,由 OpenAI 创始人 Sam Altman 于 2020 年发起。通过区块链技术在 Web3 世界中实现更加公平、开放和包容的经济体系&#…

利用python制作AI图片优化工具

将模糊图片4K高清化效果如下: 优化前的图片 优化后如下图: 优化后图片变大变清晰了效果很明显 软件界面如下: 所用工具和代码: 1、所需软件包 网盘链接:https://pan.baidu.com/s/1CMvn4Y7edDTR4COfu4FviA提取码&…