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

news2024/11/17 11:47:29

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

前置知识:文件可以处在三个区域,分别为工作区,暂存区和本地仓库,我们此文的目标即是将文件存储在本地仓库中。我们可以将文件的区域理解为,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.coloradmin.cn/o/972557.html

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

相关文章

苍穹外卖技术栈

重难点详解 1、定义全局异常 2、ThreadLocal ThreadLocal 并不是一个Thread,而是Thread的一个局部变量ThreadLocal 为每一个线程提供独立的存储空间,具有线程隔离的效果,只有在线程内才能取到值,线程外则不能访问 public void …

linux入门---动静态库的加载

目录标题 为什么会有动态库和静态库静态库的实现动态库的实现动静态库的加载 为什么会有动态库和静态库 我们来模拟一个场景,首先创建两个头文件 根据文件名便可以得知add.h头文件中存放的是加法函数的声明,sub.h头文件中存放的是减法函数的声明&#…

【每日运维】U盘启动盘安装 ESXi 6.7.0 安装卡在 loading /bnxtroce.v00

问题描述 ● ESXi 6.7.0 安装进度卡在loading /bnxtroce.v00 进度处 处理方法 ● 重新制作启动盘,写入方式改为:【USB-ZIPv2】 ● 设置服务器的 bios设置,启动方式改为【UEFI】 ● 重启开机安装即可

蛋白与蛋白互作预测 蛋白互作预测protein

How to prepare structures for HADDOCK? – Bonvin Labhttps://www.bonvinlab.org/software/bpg/structures/RosettaDock: 蛋白-蛋白复合物对接预测 - 知乎 (zhihu.com) 要进行LPR1-SEPP1复合物的结合亲和力预测,您可以按照以下步骤进行: 获取蛋白质结…

MySQL的Json类型个人用法详解

前言 虽然MySQL很早就添加了Json类型,但是在业务开发过程中还是很少设计带这种类型的表。少不代表没有,当真正要对Json类型进行特定查询,修改,插入和优化等操作时,却感觉一下子想不起那些函数怎么使用。比如把json里的…

vue实现列表自动滚动效果

效果如图: 1.下载插件 npm install vue-seamless-scroll --save 2.在main.js中引入注册 import scroll from vue-seamless-scroll Vue.use(scroll) 3.在页面中使用(写一个固定的表头 el-table:show-header"status" 设置为false,自带的表头不…

嵌入式虚拟仿真实验教学平台使用教程之搭建课程计划

嵌入式虚拟仿真实验教学平台使用教程之创建课程计划 所谓「课程计划」就是将一系列实验按照一定的顺序组织成一个教学计划,和传统的教学计划模式比较类似。接下来我将为大家讲解如何通过该平台创建属于自己的课程计划。 嵌入式虚拟仿真实验教学平台提供了两种创建课…

Python综合案例(基本地图使用)

一、基本地图的使用 基本代码: """ 演示地图可视化的基本使用 """ from pyecharts.charts import Map from pyecharts.options import VisualMapOpts# 准备地图对象 map Map() # 准备数据 data [("北京", 99),("…

js获得相对路径文件,并上传到服务器

如何通过js获得相对路径文件 已知一个相对路径文件,如何使用js将该文件读取为File格式,最后上传到服务器中呢。 1.最简单的解决方案——fetch 代码 import ./index.scss// js通过相对路径获取文件 function FetchGetLocalFile() {const fetchLocalFile …

【0904作业】QT 完成登陆界面跳转到聊天室+完成学生管理系统的查找和删除功能

一、完成登陆界面跳转到聊天室 1> 项目结构 2> 源码 ① .pro ②main #include "mywnd.h" #include"chatCli.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MyWnd w;w.show();Form f;QObject::co…

【LeetCode算法系列题解】第51~55题

CONTENTS LeetCode 51. N 皇后&#xff08;困难&#xff09;LeetCode 52. N 皇后 II&#xff08;困难&#xff09;LeetCode 53. 最大子序和&#xff08;中等&#xff09;LeetCode 54. 螺旋矩阵&#xff08;中等&#xff09;LeetCode 55. 跳跃游戏&#xff08;中等&#xff09; …

【深入解析spring cloud gateway】07 自定义异常返回报文

Servlet的HttpResponse对象&#xff0c;返回响应报文&#xff0c;一般是这么写的&#xff0c;通过输出流直接就可以将返回报文输出。 OutputStream out response.getOutputStream(); out.write("输出的内容"); out.flush();在filter中如果发生异常&#xff08;例如…

如何使用GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图

GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。例如在科研编程、绘图领域&#xff1a; 1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言&#xff0c;都可以为你提供相关的代码示例。 2、数据可…

TypeScript_树结构-BST树

树结构 树的特点 树通常有一个根。连接着根的是树干树干到上面之后会进行分叉成树枝&#xff0c;树枝还会分又成更小的树枝在树枝的最后是叶子 树的抽象 树可以模拟生活中的很多场景&#xff0c;比如&#xff1a;公司组织架构、家谱、DOM Tree、电脑文件夹架构 优秀的哈希函…

神策数据 CJO 系列丨解密 CJO:连接体验的下一个前沿趋势

10 余年前&#xff0c;市场营销的焦点聚集在增长黑客如何利用 AARRR 模型&#xff08;获取 Acquisition、激活 Activation、留存 Retention、收入 Revenue、传播 Referral&#xff09;来推动并加速企业的生长发展。我们曾相信&#xff0c;在 AARRR 漏斗中&#xff0c;只要我们吸…

宝塔面板定时监控和重启MySQL数据库(计划任务)

往期教程 如果还有不了解宝塔面板怎么使用的小伙伴&#xff0c;可以看下我总结的系列教程&#xff0c;保证从新手变老鸟&#xff1a; 【建站流程科普】 个人和企业搭建网站基本流程及六个主要步骤常见的VPS主机运维面板汇总—网站运维面板云服务器&#xff0c;VPS&#xff0…

76 # koa 上下文的实现原理

上一节实现了 koa 基本逻辑实现以及属性的扩展&#xff0c;下面继续实现上下文的实现 ctx 跟 proto 的关系 ctx.__proto__.__proto__ protoMDN&#xff1a;defineGetter 备注&#xff1a; 此特性已弃用&#xff0c;建议使用对象初始化语法或 Object.defineProperty() API 来…

《职场情绪稳定:内在的力量与策略》

近期发生的新闻热点&#xff0c;如大规模裁员、创业公司倒闭、公共卫生事件等&#xff0c;让公众更加关注稳定情绪和心理健康的问题。在职场中&#xff0c;我们常常遇到各种挑战和压力&#xff0c;如何保持稳定的情绪成了一个重要的话题。 首先&#xff0c;让我们分享一些工作中…

RecyclerView的smooth scroller -- 诸多案例

作者&#xff1a;snwrking 最近碰到好几个使用LinearSmoothScroll(下方简称为LSS)的场景, 让我对这个类的了解更加进一步, 所以分享在这, 希望对有需要的同学有所帮助. 我个人不太喜欢太理论的东西, 所以整篇文章几乎全是我做过的案例, 也方便也有类似需求的同学对号入座地取用…

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

文章目录 前言素材开始一、绘制地图二、玩家设置三、玩家移动四、玩家四方向动画运动切换 五、放置炸弹六、生成爆炸效果七、墙壁和可破坏障碍物的判断八、道具生成和效果九、玩家死亡十、简单的敌人AI十一、虚拟摇杆 待续源码完结 前言 我们将在这个视频中&#xff0c;学习如…