Git保姆级学习笔记1.基本概念及本地库使用

本文详细介绍了Git的基本操作,包括初始化本地库、设置签名、提交文件、查看操作记录、版本穿梭、找回删除文件、比较文件以及文件分支的管理。重点讲解了如何在不同版本间穿梭,解决合并冲突,以及分支的创建、切换和合并。内容适合Git初学者和开发者参考。
摘要由CSDN通过智能技术生成

1.初始化

git安装略,要求掌握基本linux指令

本地库初始化

命令:git init
效果:然后就会创建出一个.git隐藏文件,内部有以下文件
在这里插入图片描述
注意:存放的是本地库相关的子目录文件,不要删除也不要胡乱修改

设置签名

签名包含用户名和email地址,主要用于区分不同开发人员身份,
注意:这里设置的签名和远程库的账号密码没有任何关系
命令:

git config  项目/仓库级别:尽在当前本地库有效
	git config user.name balbala
	git config user.email balbala@git.com	
git config --global系统用户级别:登录当前操作系统的用户范围,可能不仅仅一个用户
	git config --global user.name balbala
	git config --global user.email balbala@git.com	

注意:项目级别优先级高于系统用户级别,如果两个都有仅采用项目级别,如果仅有系统用户级别,采用后者;不允许两者都没有
效果:
在这里插入图片描述
如果是global,那么就在家目录~下有个.gitconfig文件,里面只有user信息

2 提交文件

查看状态/提交文件

在这里插入图片描述
用 git status就可以看状态,用add就可以管这个文件
我们随便创建一个文件,
在这里插入图片描述
再使用status
在这里插入图片描述
开始追踪
在这里插入图片描述
再查看状态,绿了,已经添加到暂存区了
在这里插入图片描述
我们可以撤销,然后又会变成红色
在这里插入图片描述
接下来提交
git commit test.txt
转到下面界面
在这里插入图片描述
开启行号,这是在vim里面
在这里插入图片描述
这里的意思是填一些备注信息,比如我们这样写然后退出
在这里插入图片描述
退出后会有一些信息打印,会包含校验和和我们输入的备注,
在下面就是提交文件个数。文件内行数,模式及文件名
在这里插入图片描述
再看一下状态,表示工作区没变,缓存区也没数据
在这里插入图片描述
我们这里随意更改一下文件test.txt内容,再看状态,发现检测到被修改,
这个时候如果我们再用add就是更新文件操作而不是上传到工作区,还能用restore恢复修改,变成之前的版本;
我们可以先add再commit或者选择直接git commit -a提交全部,相当于一个命令等于前面两步
在这里插入图片描述
我们添加到缓存区,然后我们可以用git restore --staged test.txt取消存入,这里先不取消
在这里插入图片描述
然后我们提交 如果跟之前一样的命令会进入vim界面,又要让你输入备注
在这里插入图片描述
因为十分麻烦所以我们改为这个命令,引号里面的就是备注
在这里插入图片描述

查看操作记录

第一个命令查看历史记录 git log
这里面有个head指针,指向当前的版本,专门用来做版本穿梭
在这里插入图片描述
比如说我们再提交了一个版本,这样我们就有三个日志了
在这里插入图片描述
如果log过多,可能一页放不下,用空格可以下翻页,b上翻页,q退出;
也可以用这个命令精简显示一行
在这里插入图片描述
还可以这样,这样哈希值只会显示其中的一部分而不是全部
在这里插入图片描述
还有一个命令可以精致显示更多信息,多了一个commit说明和打括号内的head移动次数
在这里插入图片描述

3版本穿梭

版本穿梭

有三种,分别是基于索引,异或^或者非~;
通常使用索引进行操作

首先我们先用reflog查看指针偏移量
在这里插入图片描述
我们这样输入,红框是第二个版本的哈希值,复制记得用右键复制
在这里插入图片描述

再查看就会发现head已经偏移了,同时会记录版本穿梭的操作本身,然文件内部信息也会做出相应的改变
在这里插入图片描述
在比如说我们想往前走,同理输入对应的哈希值就可以了,可以任意穿梭
在这里插入图片描述
第二种方式就是利用异或符号进行穿梭,但是这种方式只能用于版本回退,可以看到这样就退回了倒数第二个版本,只退了一步
在这里插入图片描述
值得注意的是,如果这个时候用这个命令,只会显示之前的版本,而且不会显示本身回溯操作
在这里插入图片描述
如果我想回退多个版本,可以多写几个^,比如我们回到第三个版本
在这里插入图片描述
这样就能连续后退两个版本
在这里插入图片描述
但是如果有多个版本需要回退,总不能一直敲^,因此我们可以用~来替代比如这样
在这里插入图片描述

reset命令其他版本

除了hard还有soft或者mixd选项, 简单说一下区别:

soft只是再本地库移动head指针,并不会触碰暂存区和工作区,
mixd会移动本地库head指针,也会重置暂存区,但是不会碰工作区
hard移动本地指针后还会重置工作区和暂存区和本地库

比如这样我们就移动了指针,但是本地文件内容并没有任何变化,因为内容太乱了我就不打开看了。
在这里插入图片描述
我们看一下暂存区,发现有了变化,虽然我们并没有动里面的文件,这是因为暂存区的更改与否并不是由暂存区内文件单独决定,由于指针发生变化, 工作区文件也变化,但是我们本地和缓存一致,就是说已经追踪上了,因此它在提示我们提交。
在这里插入图片描述
重置指针,我们尝试用一下mixed,发现指针和缓存区动了,但是工作区和本地没有动,因为本地和缓存区不同因此,我们需要重新追钟本地文件再提交
在这里插入图片描述

4 找回删除文件

删除文件后恢复

我们新建一个文件aa,随便输入内容
在这里插入图片描述
先追踪并提交
在这里插入图片描述

我们先删除这个文件,比如说我们是不小心删除的
在这里插入图片描述
我们查看以下状态
在这里插入图片描述
我们把删除的状态添加到暂存区,让暂存区的文件也删除,rm也可以
在这里插入图片描述
最后提交,让工作区也删除,其实本地库会有一条记录,这并不是真正删除,他只是增加了一条记录,因此其实是可以恢复的,尽管我们在这里删除了;
在这里插入图片描述
我们可以用reflog看一下操作日志
在这里插入图片描述
我们只需要执行穿梭指令就可以恢复
在这里插入图片描述

添加到暂存区的删除文件找回

我们再新建一个文件bb
在这里插入图片描述
还是添加并提交
在这里插入图片描述
我们删除文件,并添加到缓存区,但是我们还没有提交到本地库
在这里插入图片描述
我们这个时候这样操作,就能撤销删除,因为我们本地库有记录直接覆盖就行
在这里插入图片描述

5 比较文件

承接上文,我们先修改bb文件,加了一行b,保存退出
在这里插入图片描述
我们可以用这个命令进行比较,删除的会变红(忘删了),增加的会变蓝,变色是以行为单位,如果针对一行后添加,会被翻译为删除原行增加后一行
在这里插入图片描述
如果我们追踪后再比较,会发现并没有什么区别,表示默认是与暂存区比较
在这里插入图片描述
如果我们想与本地库进行比较可以这样写,发现又有差异了
在这里插入图片描述
甚至我们还可以与某个历史版本比较
全是新增加的,因为上次根本没创建文件
在这里插入图片描述
如果我们不指定文件名,会自动对比对应版本差异
在这里插入图片描述

6.文件分支

基本概念

比如我们开发一个软件,针对不同的功能进行并行得功能开发,这样可以提搞开发效率;
就算是某个分支发开失败了,也不会对其他分支产生印象,直接删除重新开始就行了;
在这里插入图片描述

查看分支

通过这个命令就可以查看分支,master分支再初始化后自动就有,不需要欸外创建
在这里插入图片描述

创建分支

通过这个命令就可以创建新的分支,绿色表示目前所在分支位置
在这里插入图片描述

切换分支

这个命令可以切换分支
在这里插入图片描述

分支合并

我们目前在hot-fix分支下,比如说我们在这个分支下对文件bb进行操作,添加一一行c
在这里插入图片描述
我们同样对分支文件进行追踪并提交到本地库
在这里插入图片描述
我们再查看分支信息,就发现hot_fix分支往前推进了一部,这两分支对应的hash值不相等了
在这里插入图片描述
加入我们希望将刚才对bb文件的修改对master分支也生效,就需要用到分支合并操作,
首先我们要切换到被合并的分支上
在这里插入图片描述
然后我们执行merge命令,merge对象是有新内容的分支(时间戳)
在这里插入图片描述
我们再看一下bb文件,发现master分支下bb文件也有相应的修改、在这里插入图片描述
再看分支状态,俩hash数也就一样了
在这里插入图片描述

分支冲突表现

模拟一下分支冲突以及解决方案
首先修改master下的bb文件,增加一行d,保存退出
在这里插入图片描述
然后追踪并提交文件到本地库,我们发现master分支往前走了一步
在这里插入图片描述
然后我们切换到hot_fix
在这里插入图片描述
同样增加一行e,保存退出
在这里插入图片描述
追踪并提交
在这里插入图片描述
查看分支状态,俩分支都对同一文件同一行做了不同的修改w
在这里插入图片描述
我们直接在hot_fix上把master合并,提示冲突,需要手动合并,注意红框内蓝色字,表示处于正在合并状态
在这里插入图片描述
这个状态下并不会像svn一样产生额外的文件
在这里插入图片描述
但是再文件内部会显示冲突内容
HEAD表示当前指向的分支,也就是hot_fix,从等号到结尾是另外一个分支的内容
在这里插入图片描述

分支冲突解决

直接打开vim编辑文件到自己满意的程度,保存退出
在这里插入图片描述
查看状态,提示我们利用add更改状态为冲突已解决状态
在这里插入图片描述
这个时候显示冲突已经修复但是状态仍然在未合并状态,提示我们用commit进入已经合并的状态。
在这里插入图片描述
以往我们都是利用带文件名的命令行,但是这里会报错
在这里插入图片描述
这种冲突的时候我们不能带文件名,但是c日志还是需要的
在这里插入图片描述
再看一下status,冲图已经被修复了,有人进入了正常的分支状态
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无情の学习机器

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值