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 只是拉取最新版本,并不会自动合并 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一体化大气环境监测设备实时守护我们的空气质量

WX-CSQX12 随着空气污染问题的日益严重,大气环境监测设备成为了我们生活中不可或缺的一部分。而一体化的大气环境监测设备,更是为我们的环境保护工作带来了更多的便利和效益。 一体化大气环境监测设备是一种集成了多种功能于一体的环保设备,…

USB驱动开发基础

USB标准 USB1.0, 1996,低速1.5Mbps和高速12Mbps,USB1.1 iMac G3,Type A和Type B接口USB 2.0 2000, 480Mpbs,Type A/B/C接口、Micro A/BUSB 3.0 5Gbps, 随着USB 3.2命名规定,现在也叫USB 3.2 Ge…

Altium Designer学习笔记11

画一个LED的封装: 使用这个SMD5050的封装。 我们先看下这个芯片的功能说明: 5050贴片式发光二极管: XL-5050 是单线传输的三通道LED驱动控制芯片,采用的是单极性归零码协议。 数据再生模块的功能,自动将级联输出的数…

代码随想录算法训练营Day 60 || 84.柱状图中最大的矩形

84.柱状图中最大的矩形 力扣题目链接(opens new window) 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.length <10^50 < hei…

安卓毕业设计基于安卓android微信小程序的家校通系统

运行环境 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序运行软件&#xff1a;微信开发者 项目介绍 基于微信小程序的家校通系统的设计基…

ECRS生产工时分析软件:工业效率提升的隐形引擎

降本增效往往是企业开工规划的第一步。那到底降什么本&#xff0c;增什么效呢&#xff0c;对于很多企业来说&#xff0c;都是从采购成本入手&#xff0c;结果采购成本是降下来了&#xff0c;但是整体品质却下降了。实际上&#xff0c;要降本增效&#xff0c;优化现场管理才是企…

DBS note4:Buffer Management

目录 1、介绍 2、缓冲池 3、处理页面请求 4、LRU替换和时钟策略 1&#xff09;顺序扫描性能 - LRU 5、最近最常使用替换策略&#xff08;MRU Replacement&#xff09; 1&#xff09;Sequential Scanning Performance - MRU 6、练习题 1&#xff09;判断真假 2&#xf…

python实战—核心基础3(RGB模式颜色转换器) lv1

目录 一、核心代码解释 二、代码 三、运行截图 一、核心代码解释 1、hex() 函数 参数说明&#xff1a; x -- 10进制整数 返回值&#xff1a; 返回16进制数&#xff0c;以字符串形式表示。 实例&#xff1a; 以下实例展示了 hex 的使用方法&#xff1a; >>>h…

单片机调试技巧--修改bin文件实现断点

fromelf --text -a -c --outputall.dis F103_Moduel\F103_Moduel.axffromelf --bin --outputtest.bin F103_Moduel\F103_Moduel.axf 在启动文件中&#xff0c;修改UsageFault_Handler UsageFault_Handler\PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE…

WifiManager的getConnectionInfo被弃用了?快来使用ConnectivityManager获取更全的网络信息吧

前言 最近在使用flutter写桌面端的一个adb工具&#xff0c;可以使用adb命令无线连接设备&#xff0c;需要电脑和手机在同一局域网内&#xff0c;但是需要手机的ip地址。于是我想到写一个android桌面小组件&#xff0c;点一下就获取WiFi的ipv4地址并显示出来&#xff0c;先去找…

计算机网络之运输层

一、概述 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题&#xff0c;实现了主机到主机的通信 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务…

【深度学习】Transformer简介

近年来&#xff0c;Transformer模型在自然语言处理&#xff08;NLP&#xff09;领域中横扫千军&#xff0c;以BERT、GPT为代表的模型屡屡屠榜&#xff0c;目前已经成为了该领域的标准模型。同时&#xff0c;在计算机视觉等领域中&#xff0c;Transformer模型也逐渐得到了重视&a…

第十一章 docker swarm集群部署

文章目录 前言一、安装docker1.1 解压1.2 配置docker 存储目录和dns1.3 添加docker.service文件1.4 docker 启动验证 二、docker swarm 集群配置2.1 关闭selinux2.2 设置主机名称并加入/etc/hosts2.3 修改各个服务器名称&#xff08;uname -a 进行验证&#xff09;2.4 初始化sw…

【SpringBoot篇】Spring_Task定时任务框架

文章目录 &#x1f339;概述&#x1f33a;应用场景&#x1f384;cron表达式&#x1f6f8;入门案例&#x1f38d;实际应用 &#x1f339;概述 Spring Task 是 Spring 框架提供的一种任务调度和异步处理的解决方案。可以按照约定的时间自动执行某个代码逻辑它可以帮助开发者在 S…

PTA 六度空间

“六度空间”理论又称作“六度分隔&#xff08;Six Degrees of Separation&#xff09;”理论。这个理论可以通俗地阐述为&#xff1a;“你和任何一个陌生人之间所间隔的人不会超过六个&#xff0c;也就是说&#xff0c;最多通过五个人你就能够认识任何一个陌生人。”如图1所示…

Springboot+vue的新冠病毒密接者跟踪系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的新冠病毒密接者跟踪系统(有报告)。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的新冠病毒密接者跟踪系统&#xff0c;采用M&#xff08;model&#xff09;V&#xff08;v…

【实用】PPT没几页内存很大怎么解决

PPT页数很少但导出内存很大解决方法 1.打开ppt点击左上角 “文件”—“选项” 2.对话框选择 “常规与保存” &#xff08;1&#xff09;如果想要文件特别小时可 取消勾选 “将字体嵌入文件” &#xff08;2&#xff09;文件大小适中 可选择第一个选项 “仅最入文档中所用的字…

【数组栈】实现

目录 栈的概念及其结构 栈的实现 数组栈 链式栈 栈的常见接口实现 主函数Test.c 头文件&函数声明Stack.h 头文件 函数声明 函数实现Stack.c 初始化SLInit 扩容Createcapacity 压栈STPush 出栈STPop 栈顶元素STTop 判断栈是否为空STempty 栈内元素个数STSzi…

ABB机 器 人 操 作 培 训

目 录 1 培训手册介绍 ---------------------------------------------2 2 系统安全与环境保护 ---------------------------------------------3 3 机器人综述 ---------------------------------------------5 4 机器人示教 --------------------------------------------12…

普通平衡树

题意&#xff1a;略&#xff0c;题中较清晰。 用二叉查找树来存储数据&#xff0c;为了增加效率&#xff0c;尽量使左子树和右子树的深度差不超过一&#xff0c;这样可以时间控制在logn&#xff0c;效率比较高。 右旋和左旋&#xff0c;目的是为了维护二叉树的操作&#xff0…