Git相关知识(1)

目录

1.初识Git 

1.基础知识

2.centos中下载

2.基本操作

1.创建本地仓库

2.配置本地仓库

3.版本库、工作区、暂存区

4.添加文件

5.add和commit对git文件的作用

6.修改文件

7.版本回退

8.撤销修改

9.删除文件

3.分支操作

1.HEAD与分支

2.创建分支

3.删除分支

4.合并冲突

5.分支管理

6.分支决策


1.初识Git 

1.基础知识

Git:是一种版本控制器,用于记录每一次修改以及版本迭代的一个管理系统

作用:可以控制电脑上所有格式的文档,对于开发人员而言最重要的就是可以管理项目中的源代码文档

2.centos中下载

sudo yum install git -y

2.基本操作

1.创建本地仓库

想要Git进行管理,必须将文件放在Git仓库中进行管理

git init:在当前文件中创建一个Git仓库

此时我们会发现文件中有一个隐藏文件.git,其用于追踪管理文件

2.配置本地仓库

1.配置用户名称:git config user.name "(这里写用户名字)"

2.配置用户email地址:git config user.email"(这里写用户地址)"

3.查看当前所有的配置属性:git config -l

4.重置配置:git config --unset XXX(属性)

在当前主机下,本地仓库可以开辟多个

5.所有本地仓库的配置项:本地仓库git config --global XXX(属性) YYY(配置信息)

6.--global创建的属性,不能通过普通的重置,得使用git config --global --unset XXX(属性)

3.版本库、工作区、暂存区

1.如果直接新建一个文档在本地仓库下,那么此时git并没有对该文档进行管理

2.真正管理文件的仓库其实是.git这个隐藏文件。此外不能对.git进行手动修改

3..git为版本库,也叫做仓库

4.生成的这个文档其实在工作区

5.index为暂存区,也是索引。存储的是修改对象的索引

6.objects:对象库,存储git对象。修改的工作区内容会写入到对象库的一个git对象。用于维护所有文件的版本

7.master:存储修改对象的索引

add:将工作区的修改文件添加到暂存区。这里的修改文件指的是:增删改的文件

commit:将index的文件存入到master中,此刻才能说文件被放入了版本库中进行管理

4.添加文件

git add . :工作区所有文件添加到暂存区

git add (指定文件) :工作区指定文件添加到暂存区

git commit -m "(本次添加的细节)"

git log:查看由近到远的提交记录细节   [git log --pretty=oneline]

5.add和commit对git文件的作用

1.add之后的内容都在index中

2.cat .git/HEAD后,我们能查看到HEAD指向的是master

3.master存放的是最新的commit的id

4.objects中存放了很多的对象

5.git  cat-file -p commit的id:查看objects中的对象

6.修改文件

git status:查看哪些文件进行修改

git diff 文件名:查看文件修改的是情况(-为原版,+为改版)

7.版本回退

git reset [--soft | --mixed | --head] [HEAD]:本质是将版本库的版本进行回退

--soft:只回退版本库

--mixed:回退版本库和暂存区

--head:回退所有内容

git reflog:查看每次本地提交命令

1.配合git log --pretty=oneline查看得到commitID,使用git reset [--soft | --mixed | --head] [HEAD]

2.git reset [--soft | --mixed | --head] [HEAD]可以回退,但是需要得到commitID

1.版本回退的速度其实很快

2.其原理其实是因为HEAD指向的master中有commitID,只需要在回退版本时将master的commitID修改即可

3.git reset还可以回退到当前版本,用于撤销修改。默认时--mixed,^表示回退一个版本

8.撤销修改

撤销有不同的策略:

1.只有工作区修改了

1.手动撤销 --- 不推荐 

2.git checkout -- [文件名]

2.工作区和暂存区修改了

1.git reset --head 文件名 HEAD

2.git reset 文件名,就变成了条件1

3.所有区都修改了

git reset --head HEAD

1.push操作可把版本库内容发送给远程仓库

2.想要实现条件3撤销修改操作,需要在commit之后没有进行push操作

3.条件3修改是为了不影响远程仓库

9.删除文件

方法1:rm删除文件后,还想要add和commit将文件更新

方法2:git rm 文件,实际该操作包含rm和add两步,最后我们commit即可

3.分支操作

1.HEAD与分支

HEAD指向的master,master记录最新的commitID。通过对master的结构中的parent能够回溯到之前的版本中去

2.创建分支

git branch:查看分支

git branch 创建分支的名称:创建分支

1.HEAD可以指向其他分支,被HEAD指向的分支才是当前工作的分支

2.此时我们会发现,HEAD文件中有一个master和一个新建的分支。并且这个新建分支指向的也是当前的工作分支

git checkout 分支名称:切换分支(HEAD指向新分支)

git merge 分支名称:合并分支

3.删除分支

删除分支的条件就是:必须在其他的分支上对非当前分支上进行删除

git branch -d 分支名:删除指定分支,指的是合并后的删除

4.合并冲突

多条分支对同一个文件进行操作后,使得文件的内容都不一样,那么此时如果进行git merge合并操作,那么就会报错说明当前的内容合并冲突了,需要我们自己手动进行筛选自己想要的内容。

一旦冲突修复完毕,需要重新对文件进行提交。

git log --graph --abbrev-commit:可视化分支结构

5.分支管理

git merge合并的通常为Fast forward模式。该模式无法判断是merge进来的文件还是正常提交的文件

git merge --no--ff -m "提交信息" 分支:不使用Fast forward模式

6.分支决策

1.master分支:在任何环境下都是稳定的环境,它在项目实现中作为最终出现的结果。其他分支不稳定需要经过公司的一系列测试最终将稳定的代码合并到master中去。其他分支的编写真好符合分组开发的要求。

2.bug分支:master分支稳定也不能百分百得到保证,它也会出现bug。我们不能在master中直接对文件进行修改。当然所有业务开发的文件都可以创建bug分支对文件进行修改为保证可靠性。

git stash:将工作区的内容进行存储,保存到/refs中。

git stash list:查看保存

git stash pop:撤回stash

1.如果其他文件正在开发,master出bug了,那么将其他开发文件git stash保存,此时的文件变回原来的内容。随后创造bug分支,将所有的修改改完合并到master中。最后将其他开发git stash pop,撤回stash继续开发。

2.若想继续将master和其他文件进行合并,不建议直接在master中合并,我们要在其他文件中合并,就算合并有bug也可以慢慢改

未merge的分支的删除操作:

1.首先说明不能使用git branch -d,因为文件被保护无法删除

2.可以使用git branch -D强制删除

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

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

相关文章

sface人脸相似度检测

sface人脸相似度检测,基于OPENCV,人脸检测采用yunet,人脸识别采用sface,支持PYTHON/C开发,图片来自网络,侵权请联系本人立即删除 yunet人脸检测sface人脸识别,检测两张图片的人脸相似度

NoSQL数据库(林子雨慕课课程)

文章目录 5.1 NoSQL数据库5.2 NoSQL和关系数据库的比较5.3 四大类型NoSQL数据库5.3.1 键值数据库和列族数据库5.3.2 文档数据库、图数据库、以及不同数据库比较分析 5.4 NoSQL数据库的理论基石CAP理论:BASE理论:Eventual consistency(最终一致…

多线程(线程互斥)

抢票代码编写 学习了前面有关线程库的操作后,我们就可以模拟抢票的过程 假设我们创建四个线程,分别代表我们的用户 然后设定总票数为1000张,四个线程分别将进行循环抢票操作,其实就是循环对票数进行打印,并进行对应的…

面试经典 150 题 14 —(数组 / 字符串)— 134. 加油站

134. 加油站 方法一 class Solution { public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int minSpare std::numeric_limits<int>::max(); // 初始化最小剩余汽油量为整型的最大值int spare 0; // 当前剩余汽油量int len g…

Java架构师高并发架构设计

目录 1 导学2 什么是高并发问题3 高并发处理之道4 akf扩展立方体5 细化理念应对高并发5 总结1 导学 本章的主要内容是大型系统架构设计的难点之一,高并发架构设计相关的知识落到实际项目上,就是订单系统的高并发架构设计。我们首先会去学习到底何为高并发问题,先把问题搞清楚…

【虹科分享】什么是Redis数据集成(RDI)?

大量的应用程序、日益增长的用户规模、不断扩展的技术需求&#xff0c;以及对即时响应的持续追求。想想这些是否正是你在经历的。也许你尝试过自己构建工具来应对这些需求&#xff0c;但是大量的编码和集成工作使你焦头烂额。那你是否知道&#xff0c;有这样一个工具可以帮助你…

牛津大学海外学习:14天的知识与文化之旅

牛津——一个充满学术氛围与古老传统的城市&#xff0c;对于我这次14天的海外学习经验来说&#xff0c;这里每一个角落都隐藏着知识和历史的故事。作为中国的一名学生&#xff0c;能够在这里学习、生活&#xff0c;真是一次难得的机会。 我报名的是《人工智能》课程&#xff0…

在两个有序数组中找整体第k小的数

一、题目 给定两个已经排序的数组&#xff08;假设按照升序排列&#xff09;&#xff0c;然后找出第K小的数。比如数组A {1&#xff0c; 8&#xff0c; 10&#xff0c; 20}&#xff0c; B {5&#xff0c; 9&#xff0c; 22&#xff0c; 110}&#xff0c; 第 3 小的数是 8.。…

Gitlab+Jenkins自动化部署,解放双手

项目打包 ​ 在部署项目前需要对源码进行打包&#xff0c;一个简单的SpringBoot项目默认是打包为jar包&#xff0c;也就是在pom.xml中的<packaging>jar</packaging>方式&#xff0c;当然也会有一些打包成war包方式&#xff0c;使用外置的Tomcat应用服务器部署war包…

JVM面试题:(二)内存结构和内存溢出、方法区的两种实现

内存结构&#xff1a; 方法区和对是所有线程共享的内存区域&#xff1b;而java栈、本地方法栈和程序员计数器是运行是线程私有 的内存区域。 Java堆&#xff08;Heap&#xff09;,是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内 存区域&#xff0c;在…

最新抖音去水印PHP源码 非第三方接口

简介&#xff1a; 最新抖音去水印PHP源码 非第三方接口 源码全开源 视频解析接口来自官方抖音视频接口!非第三方接口!上传PHP环境中即可运行!支持上传二级目录访问! 访问你的域名地址/douyin.php douyin.php(此文件可以自行重新命名) 支持带有文本的链接和视频ID或者分享的…

在conda虚拟环境下安装PyTorch-gpu版本

conda环境配置 在conda虚拟环境下安装PyTorch-gpu版本1. 下载好anaconda以及CUDA2. 创建并进入虚拟环境 选择python版本3. 找对python torch torchvision cuda的对应版本 并 下载安装4. 测试是否成功5. 参考资料 在conda虚拟环境下安装PyTorch-gpu版本 引言&#xff1a; 学会在…