git的用法

目录

一、为什么需要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.mzph.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…

安装第三方包报错 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 *

Unity中颜色空间Gamma与Linear

文章目录 前言一、人眼对光照的自适应1、光照强度与人眼所见的关系2、巧合的是&#xff0c;早期的电子脉冲显示屏也符合这条曲线3、这两条曲线都巧合的符合 y x^2.2^&#xff08;Gamma2.2空间&#xff09; 二、Gamma矫正1、没矫正前&#xff0c;人眼看电子脉冲显示屏&#xff…