目录

一、为什么需要git

二、git基本操作 

2.1、初始化git仓库

 2.2、配置本地仓库的name和email

2.3、认识工作区、暂存区、版本库

三、git的实际操作

 3.1 提交文件

3.2  查看git状态以及具体的修改

3.3  git版本回退    git  reset

3.1 撤销修改

四、git分支管理

4.1 理解分支

4.2 创建分支

4.3  合并分支

4.4  删除分支

4.5  合并冲突

4.6 合并分支的两种模式:ff  和  no-ff

4.7 分支策略

五、远程操作

5.1 创建远程仓库

5.2  克隆远程仓库

5.3 推送、拉取操作


一、为什么需要git

先来看看一个场景:老板让你写文件

 我们可以用到版本控制器:git

二、git基本操作 

2.1、初始化git仓库

git  init

 2.2、配置本地仓库的name和email

增加:

git   config   user.name  "XXX"        也可在开头加一个  --global ,表示在当前机器的所有仓库上配置

git   config   user.email  "XXX"

删除:

git   config   --unset     user.name  "XXX"    

2.3、认识工作区、暂存区、版本库

先来创建一个ReadMe文件

思考ReadMe文件是干什么的

其实就是这个项目的说明书,比如项目目的、功能、使用方法等基本信息,它可以让其他人一眼看懂项目,并为项目的使用和参与提供指导。它是项目开源和共享的重要组成部分。

图解工作区、暂存区(索引区)、版本库。

暂存区和版本库当中存放的都是git对象库的索引,其实也就是通过一个个git对象,能拿到不同的文件版本

三、git的实际操作

 3.1 提交文件

也可以有多个add,一次性commit 

git  log  查看由近到远的提交记录

3.2  查看git状态以及具体的修改

git  status 查看哪些文件修改了

git  status只能查看文件有没有修改,并不能查看具体的修改内容

使用   git  diff  查看暂存区和工作区具体的修改

git  diff  HEAD  --  [filename]  查看版本库和工作区的差别

3.3  git版本回退    git  reset

本质是回退版本库中的内容 ,工作区和暂存区回不回退取决于参数

git    reset 【--soft | --mixed | --hard】HEAD
--mixed 为默认选项,使⽤时可以不⽤带该参数。该参数将暂存区的内容退回为指定提交版本内 容,⼯作区⽂件保持不变。
--soft 参数对于⼯作区和暂存区的内容都不变,只是将版本库回退到某个指定版本。
--hard 参数将暂存区与⼯作区都退回到指定版本。切记⼯作区有未提交的代码时不要⽤这个命
,因为⼯作区会回滚,你没有提交的代码就再也找不回了,所以使⽤该参数前⼀定要慎重。

HEAD说明

可直接写成 commit id,表⽰指定退回的版本
HEAD         表⽰当前版本
HEAD^       上⼀个版本
HEAD^^     上上⼀个版本
以此类推

可以使⽤ 〜数字表⽰
HEAD~0 表⽰当前版本
HEAD~1 上⼀个版本
HEAD^2 上上⼀个版本
以此类推...

我们这里能够回退是因为我们拿到了 之前版本的 commit  id,假如没有的话,我们就不能这样子操作了

如果我们现在拿不到之前的commit  id,该怎么补救呢?

使用  git  reflog ,可以查看本地每次的提交命令

我们可以发现:版本回退的时候是非常快的,为什么呢?

3.1 撤销修改

git  checkout  -- 【filename】撤销工作区,暂存区和版本库还得用到git  reset  命令

情况一:只是撤销工作区

我们可以使用 git  checkout  --  【filename】   (切记加上 -- ,不加就是切换分支的命令了 )

情况二:撤销工作区和暂存区

我们可以用  git  reset  --mixed HEAD^  先只把暂存区回退,那么就回到了情况一,然后再用git  checkout;

当然,我们也可以直接用一步  git  reset --hard HEAD 就行了,但是不推荐,--hard力度太大了,回退整个仓库

情况三:已经commit了,而且没有push

撤销的目的:不影响远程仓库的内容

四、git分支管理

4.1 理解分支

4.2 创建分支

git  branch  【新分支名字】

我们再来使用git  tree 命令来看一下git的结构发生了变化没有:

4.3  合并分支

我们要想操作dev分支,就需要将HEAD指向dev分支让dev变成工作分支才行

使用  git  checkout  【分支名字】 切换分支

我们在dev上进行提交并合并  使用  git  merge  合并

4.4  删除分支

使用   git  branch  -d  【要删除的分支名字】

4.5  合并冲突

merge 冲突需要手动解决,并且再进行一次提交

4.6 合并分支的两种模式:ff  和  no-ff

模式一: Fast-forward

直接merge就是  ff模式,比较简单,但是不能看出最新提交到底是merge进来的还是正常提交的

模式二:非 Fast-forward  ,在merge的时候再进行一次commit

4.7 分支策略

介绍分支管理要遵守的原则

master主分支要求比较稳定,dev分支是开发人员日常操作的代码,还没有经过测试验证

五、远程操作

我们之前的所有操作:分支也好,add,commit也好,都是在本地的仓库进行的,并不能做到多人协助开发,想要多人开发,必须要进行远程操作  ,也就是用到码云(gitee)

Git 其实是分布式版本控制系统

5.1 创建远程仓库

5.2  克隆远程仓库

1. 使用HTTPS协议:

这种比较简单,直接就是git  clone  + 远程仓库的https地址就行了。拉下来之后就能看到我们这时候由fetch  和  push的功能

2. 使用 SSH协议

这中就是用到本地的公匙,并且在gitee上去配置,这种主打一个安全(一般公司都是用的这种)

我们这时候需要去创建 SSH  Key

执行完命令之后就能看到    .ssh文件了

我们将id_rsa.pub 的内容配置到gitee上即可

配置完之后,我们就可以直接在本地的xshell上克隆远端仓库了

5.3 推送、拉取操作

我们先来看一下推送,也就是本地代码 push到远程

就是执行完commit之后 直接push就好了

拉取:

拉取的时候是有两种操作的,一种是 git  pull  ,一种是  git  fetch,这两种区别在于:

git  pull  会自动执行 git  fetch拉取最新版本,然后自动执行git  merge 拉取分支合并到本地(有冲突就自己去解决),通过git  status 去查看会发现非常干净

git  fetch 只是拉取最新版本,并不会自动合并 

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

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

相关文章

vue el-table (固定列+滚动列)【横向滚动条】确定滚动条是在列头还是列尾

效果图&#xff1a; 代码实现&#xff1a; html&#xff1a; <script src"//unpkg.com/vue2/dist/vue.js"></script> <script src"//unpkg.com/element-ui2.15.14/lib/index.js"></script> <div id"app" style&quo…

【数据结构】树如何定义 | 如何存储 | 实际应用

前言 如上图&#xff0c;A中的孩子的个数是不固定的。我们无法精确的每个不同的根结点有多少个孩子。所以并不能精确知道需要定义多少个孩子节点。 struct TreeNode {int val;struct TreeNode* child1;struct TreeNode* child2;struct TreeNode* child3;//...//这样显然是不能…

springboot 拦截器中使用@Value注解为null

拦截器中获取配置参数为null 代码如下&#xff1a; 解决方式一&#xff1a; 检查你的WebMvcConfigurer实现类&#xff0c;比如我的是CCBWebMvcConfig 将拦截器以bean的形式注入&#xff1a; 我之前的写法是new 一个放进去的&#xff0c;这种会导致Value为null AutowiredJSCCB…

2014年10月6日 Go生态洞察:Go在Google I/O和Gopher SummerFest的应用

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

《微信小程序开发从入门到实战》学习二十七

3.4 开发参与投票页面 3.4.2 借用伪造数据开发功能 为了便于开发&#xff0c;新建一个编译模式&#xff1a; 之前没看文章&#xff0c;每次都习惯性填完投票创建的信息提交再跳转看效果。好累。 添加变异模式开发真方便。 另外&#xff0c;点击提交后没跳转到投票页面&#…

xorm源码学习

文章目录 XORM源码浅析及实践ORMORM vs. SQLXORM软件架构 ORM 引擎 Engine——DBM*core.DB Golang&#xff1a;database/sql 源码基本结构连接复用&#xff0c;提高性能。增加数据库连接池数量连接管理 database/sql主要内容&#xff1a;sql.DB创建数据库连接sql.Open()DB.conn…

Spring——感谢尚硅谷官方文档

Spring——尚硅谷学习笔记 1 Spring简介&#x1f47e;1.1 Spring概述1.2 Spring Framework1.2.1 Spring Framework特性1.2.2 Spring Framework五大功能模块 2 IOC-IOC容器思想&#x1f47e;IOC容器思想IOC在Spring中的实现 3 IOC-基于XML文件管理Bean&#x1f47e;3.1 准备工作…

2023亚太杯数学建模A题思路 - 采果机器人的图像识别技术

# 1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国&#xff0c;年产量约为3500万吨。与此同时&#xff0c;中国也是世 界上最大的苹果出口国&#xff0c;全球每两个苹果中就有一个&#xff0c;全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…

数据库实验四 索引创建与管理操作

数据库实验四 索引创建与管理操作 一、实验目的二、设计性实验三、观察与思考 一、实验目的 (1) 理解索引的概念与类型。 (2) 掌握创建、更改、删除索引的方法。 (3) 掌握维护索引的方法。 二、设计性实验 在数据库job下创建worklnfo表。创建表的同时在id字段上创建名为inde…

【HarmonyOS】元服务卡片本地启动拉起加桌没问题,上架后拉起加桌时卡片展示异常

【关键字】 加桌选卡展示异常 、 2卡共用一个布局 、 代码混淆 【问题现象】 元服务卡片在本地启动拉起加桌时&#xff0c;多卡的选卡过程显示是没问题的。但是在上架后拉起加桌时&#xff0c;多卡的选卡过程卡片展示异常。 代码逻辑是通过创建卡片的时候判断卡片的尺寸大小…

数据结构与算法编程题13

设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C&#xff0c;其中B表的结点为A表中值小于零的结点&#xff0c;而C表的结点为A表中值大于零的结点&#xff08;链表A中的元素为非零整数&#xff0c;要求B、C表利用A表的结点&#xff09; for example: A -1 2 …

SpringBoot + 通义千问 + 自定义React组件,支持EventStream数据解析!

一、前言 大家好&#xff01;我是sum墨&#xff0c;一个一线的底层码农&#xff0c;平时喜欢研究和思考一些技术相关的问题并整理成文&#xff0c;限于本人水平&#xff0c;如果文章和代码有表述不当之处&#xff0c;还请不吝赐教。 最近ChatGPT非常受欢迎&#xff0c;尤其是…

virtualList 封装使用 虚拟列表 列表优化

虚拟列表 列表优化 virtualList 组件封装 virtualList 组件封装 本虚拟列表 要求一次性加载完所有数据 不适合分页 新建一个select.vue 组件页面 <template><div> <el-select transfer"true" :popper-append-to-body"true"popper-class…

YOLOv8/5不显示FLPOs

YOLOv8/5不显示FLPOs,避免自媒体搬运,请下滑! YOLOv8/5不显示FLPOs,避免自媒体搬运,请下滑! YOLOv8/5不显示FLPOs,避免自媒体搬运,请下滑! YOLOv8/5不显示FLPOs,避免自媒体搬运,请下滑! YOLOv8/5不显示FLPOs,避免自媒体搬运,请下滑! YOLOv8/5不显示FLPOs,避免自…

安装第三方包报错 error: Microsoft Visual C++ 14.0 or greater is required——解决办法

1、问题描述 手动安装第三方软件时&#xff0c;可以使用setup.py&#xff0c;来安装已经下载的第三方包。一般文件下会存在setup&#xff0c;在所要安装库的目录下的cmd执行&#xff1a;python setup.py install报错&#xff1a;error: Microsoft Visual C 14.0 or greater i…

所有权成果输出(宗地基本信息表、界址标示表、界址签章表、界址点成果表、宗地图、界址说明表、调查审核表)

一、软件界面&#xff1a; 二、软件功能&#xff1a; 一、所有权成果要求(宗地基本信息表、界址标示表、界址签章表、界址点成果表、宗地图、界址说明表、调查审核表&#xff09; 1 不动产权籍调查表封面 &#xff08;1&#xff09;宗地&#xff08;海&#xff09;代码&…

基于element-plus定义表单配置化扩展表单按钮

文章目录 前言一、新增btn.vue组件二、使用总结如有启发&#xff0c;可点赞收藏哟~ 前言 在后台管理系统一般都存在列表查询&#xff0c;且可输入数据进行查询 基于element-plus定义表单配置化 新增按钮配置化 一、新增btn.vue组件 <template><template v-for&qu…

代码随想录算法训练营第四十二天【动态规划part04】 | 01背包、416. 分割等和子集

01背包问题 题目链接&#xff1a; 题目页面 求解思路&#xff1a; 确定dp数组及其下标含义&#xff1a;dp[i][j] 表示从下标为 [0] 到 [i] 的物品里任意选取&#xff0c;放进容量为j的背包&#xff0c;此时的价值总和最大值确定递推公式&#xff1a; 不放物品i&#xff0c;…

centos查看空间使用情况

查看磁盘使用空间 df -h 查看该目录下其他目录的大小 du -sh *