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.rhkb.cn/news/204070.html

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

相关文章

fastjson和jackson序列化的使用案例

简单记录一下一个fastjson框架和jackson进行序列化的使用案例: 原json字符串: “{“lockCount”:”{1:790,113:1,2:0,211:0,101:1328,118:8,137:0,301:0,302:0}“,“inventoryCount”:”{1:25062,113:2,2:10000,211:2,101:11034,118:9,137:40,301:903914…

【数据库】聊聊一颗B+树 可以存储多少数据

我们知道数据库使用的数据结构是B树,但是B树可以存储多少数据呢,在面试中也是经常会问的问题,所以我们从根上理解这个问题。 操作系统层面 数据都是存储在磁盘中的,而磁盘中的数据都是以最新单位扇区进行分割。一个扇区的大小是…

大数据平台/大数据技术与原理-实验报告--MapReduce编程

实验名称 MapReduce编程 实验性质 (必修、选修) 必修 实验类型(验证、设计、创新、综合) 综合 实验课时 2 实验日期 2023.10.30-2023.11.03 实验仪器设备以及实验软硬件要求 专业实验室(配有centos7.5系统…

Cortex-M与RISC-V区别

环境 Cortex-M以STM32H750为代表,RISC-V以芯来为代表 RTOS版本为RT-Thread 4.1.1 寄存器 RISC-V 常用汇编 RISC-V 关于STORE x4, 4(sp)这种寄存器前面带数字的写法,其意思为将x4的值存入sp4这个地址,即前面的数字表示偏移的意思 反之LOA…

论文阅读:“Model-based teeth reconstruction”

文章目录 AbstractIntroductionTeeth Prior ModelData PreparationParametric Teeth Model Teeth FittingTeeth Boundary Extraction Reference Abstract 近年来,基于图像的人脸重建方法日趋成熟。这些方法可以捕捉整个面部或面部特定区域(如头发、眼睛…

探索H5的神秘世界:测试点解析

Html5 app实际上是Web app的一种,在测试过程中可以延续Web App测试的部分方法,同时兼顾手机端的一些特性即可,下面帮大家总结下Html5 app 相关测试方法! app内部H5测试点总结 1、业务逻辑 除基本功能测试外,需要关注的…

【微服务专题】微服务架构演进

目录 前言阅读对象阅读导航前置知识笔记正文一、系统架构的演变1.1 单体架构1.2 单体水平架构1.3 垂直架构1.4 SOA架构1.5 微服务架构 二、如何实现微服务架构2.1 微服务架构下的技术挑战2.2 微服务技术栈选型2.3 什么是Spring Cloud全家桶2.4 Spring Cloud Alibaba版本选择 学…

智慧化工~工厂设备检修和保全信息化智能化机制流程

化工厂每年需要现场检修很多机器,比如泵、压缩机、管道、塔等等,现场检查人员都是使用照相机,现场拍完很多机器后,回办公室整理乱糟糟的照片,但是经常照了之后无法分辨是哪台设备,而且现场经常漏拍&#xf…

HarmonyOS4.0系列——02、汉化插件、声明式开发范式ArkTS和类web开发范式

编辑器调整 我们在每次退出编辑器后再次打开会直接进入项目文件中,这样在新建项目用起来很是不方便,所以这里跟着设置一下就好 这样下次进入就不会直接跳转到当时的文件项目中!! 关于汉化 settings → plugins → installe…

耗时一个星期整理的APP自动化测试工具大全

在本篇文章中,将给大家推荐14款日常工作中经常用到的测试开发工具神器,涵盖了自动化测试、APP性能测试、稳定性测试、抓包工具等。 一、UI自动化测试工具 1. uiautomator2 openatx开源的ui自动化工具,支持Android和iOS。主要面向的编程语言…

西南科技大学数字电子技术实验二(SSI逻辑器件设计组合逻辑电路及FPGA实现 )预习报告

一、计算/设计过程 说明:本实验是验证性实验,计算预测验证结果。是设计性实验一定要从系统指标计算出元件参数过程,越详细越好。用公式输入法完成相关公式内容,不得贴手写图片。(注意:从抽象公式直接得出结果,不得分,页数可根据内容调整) 1、1位半加器 真值表: 逻…

flask 上传文件

from flask import Flask, request, render_template,redirect, url_for from werkzeug.utils import secure_filename import os from flask import send_from_directory # send_from_directory可以从目录加载文件app Flask(__name__)#UPLOAD_FOLDER media # 注意&#xff…

Me-and-My-Girlfriend-1

Me-and-My-Girlfriend-1 一、主机发现和端口扫描 主机发现,靶机地址192.168.80.147 arp-scan -l端口扫描,开放了22、80端口 nmap -A -p- -sV 192.168.80.147二、信息收集 访问80端口 路径扫描 dirsearch -u "http://192.168.80.147/" -e * …

深入探索Maven:优雅构建Java项目的新方式(一)

Maven高级 1,分模块开发1.1 分模块开发设计1.2 分模块开发实现 2,依赖管理2.1 依赖传递与冲突问题2.2 可选依赖和排除依赖方案一:可选依赖方案二:排除依赖 3,聚合和继承3.1 聚合步骤1:创建一个空的maven项目步骤2:将项目的打包方式改为pom步骤…

在Linux中对Docker中的服务设置自启动

先在Linux中安装docker,然后对docker中的服务设置自启动。 安装docker 第一步,卸载旧版本docker。 若系统中已安装旧版本docker,则需要卸载旧版本docker以及与旧版本docker相关的依赖项。 命令:yum -y remove docker docker-c…

2304. 网格中的最小路径代价 : 从「图论最短路」过渡到「O(1) 空间的原地模拟」

题目描述 这是 LeetCode 上的 「2304. 网格中的最小路径代价」 ,难度为 「中等」。 Tag : 「最短路」、「图」、「模拟」、「序列 DP」、「动态规划」 给你一个下标从 0 开始的整数矩阵 grid,矩阵大小为 m x n,由从 0 到 的不同整数组成。 你…

设计模式之十二:复合模式

模式通常被一起使用,并被组合在同一个解决方案中。 复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。 首先重新构建鸭子模拟器: package headfirst.designpatterns.combining.ducks;public interface Quackable …

Scala如何写一个通用的游戏数据爬虫程序

以前想要获取一些网站数据的时候,都是通过人工手动复制粘贴,这样的效率及其低下。数据少无所谓,如果需要采集大量数据,手动就显得乏力了。半夜睡不着,爬起来写一段有关游戏商品数据的爬虫通用模板,希望能帮…

Servlet实现一个简单的表白墙网站

文章目录 前言效果展示事前准备HTML、CSS、JavaScript分别负责哪些HTML和CSS构架出页面的基本结构和样式JavaScript 实现行为和交互实现服务器端的业务代码整理pom.xmlweb.xmlmessageWall.htmlMessageServlet.java 前言 前面我们学习了 Java 中知名的 HTTP 服务器 tomcat 的安…

linux下的工具---yum

一、什么是yum yum是Linux下的软件包管理器 二、什么是软件包管理器 1、在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 2、但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在…