当前位置: 首页 > news >正文

Git使用教程:最详细、最傻瓜、最浅显、真正手把手教

GIT

      • GIT
          • 版本控制
          • 版本控制的意义
          • 分布式
          • 图形化客户端
          • 环境搭建
        • 仓库的操作
        • 分支
          • 使用场景
          • 命令
        • 远程仓库操作
          • 生成公钥
          • 命令
          • 冲突
          • 忽略列表的配置
            • 时机
            • 配置方式
          • 版本回退
          • 练习:

GIT

版本控制

把文件系统中的文件,按照修改的版本进行记录,进行管理的操作。

版本控制的意义
  1. 备份文件,防止丢失
  2. 协同工作,处理文件合并和冲突的问题
  3. 责任追溯
  4. 工作量统计
  5. 个人开发时代码的回退
分布式

在这里插入图片描述

git是一个分布式的版本控制工具,包含本地仓库和远程仓库两种仓库。每个仓库中都存放历史版本文件,可以单独进行管理。通过使用远程仓库可以实现多用户之间的协同。

图形化客户端

乌龟系列、SourceTree

环境搭建

开发者名称和邮箱:在git中,要求开发者提供一个名称和邮箱。用于开发者之间的沟通交流,该名称和邮箱不会进行验证,可以任意指定。但一般填写时,至少保证邮箱是自己的,便于其他开发者联系。

仓库的操作

工作区:.git目录在哪个目录中,那哪个目录就是工作区。工作区中的文件才能被版本控制。换句话说,工作区就是一个能够被git操作的范围。

本地仓库:就是.git目录,内部有一套存储结构,能够保存各个文件的版本并进行版本控制。

暂存区:是一个临时存储空间,工作区中的文件要先添加到暂存区,然后才能提交到本地仓库中成为一个版本。

命令作用
git init初始化,创建 git 仓库
git status查看 git 状态 (文件是否进行了添加、提交操作)
git add 文件名添加,将指定文件添加到暂存区
git commit -m ‘提交信息’提交,将暂存区文件提交到历史仓库。git中强制提交时必须填写说明信息,建议把说明信息填写详细一些
git log查看日志( git 提交的历史日志)

重置操作(回退版本)

​ git reset --hard 版本号前几位(只要这几位能唯一确定一个版本即可。)

分支

分支是每一次提交的代码的版本节点串成的一条时间线。可以从任何一个节点开辟新的分支继续进行串联。

使用场景
  1. 修复以前版本的bug
  2. 在开发分支中加入一些尝试性的操作(做实验)
  3. 并行开发多个不同版本
命令
  1. 创建 git branch 分支名

    ​ 如果在创建分支的时候最后加上版本号,就可以基于指定版本创建分支。

    ​ git branch 分支名 版本号

  2. 切换 git checkout 分支名

  3. 查看分支列表 git branch

  4. 合并 git merge 分支名

    ​ 把指定的目标分支的内容,合并到当前分支

    ​ 合并:把两个分支中如果有互相独立的文件,直接放到一起。如果两个分支中有相同的文件,保留一个即可。如果两个分支中有相同名字的文件但是内容不一样,这就会查看内容中行是否可以合并。如果内容是完全不同的,并且不能简单追加合并,则产生冲突。冲突必须手动解决。

远程仓库操作

克隆:在本地什么都没有的情况下,第一次操作时进行的操作。会把远程仓库中的所有文件包括.git版本库都复制过来。一般克隆和init操作二选一即可。

推送:把本地仓库的内容上传到远程仓库中

​ 注意:在实际操作时,为了保证推送能够成功,推送之前养成先拉取的习惯。同时,推荐大家养成勤拉取,勤提交的习惯。

拉取:把远程仓库中的内容下载到本地,这个下载是更新下载,类似于分支的合并。

生成公钥

用于验证以ssh协议访问仓库的权限。

公钥和私钥配对进行加密通信作为验证身份的手段。

直接参考gitee或者github上的新手向导输入指令添加公钥到服务器即可。

如果使用http协议的话,就不需要配置公钥和私钥了,而是会弹出登录窗口让你输入网站的用户名和密码进行验证。

命令

添加远端地址

​ git remote add 远端名称 url(http协议和ssh协议两种)

推送本地仓库到远端

​ git push -u 远端名称 分支名

克隆

​ git clone 远端url

拉取

​ git pull 远端名称 分支名

冲突
  1. 要尽可能提前预防冲突,防止冲突产生。勤拉取勤推送

  2. 产生冲突之后,要知道如何解决。

    ​ 自动在拉取的时候会把冲突的文件进行合并,只不过会把冲突部分用特殊句式标注出来,我们需要手动指定最终版本然后再提交推送。所以,如果我们提交的粒度足够小,冲突的代码就会比较少,就会比较容易解决。

忽略列表的配置
时机

项目刚创建,第一次提交之前就要配置完毕。

配置方式

在工作目录下创建一个文件,名称为 .gitignore

# no .a files 以.a结尾的所有文件被忽略

*.a

# but do track lib.a, even though you’re ignoring .a files above

# lib.a会被版本控制,是在上面配置的基础上排除lib.a的忽略

!lib.a

# only ignore the TODO file in the current directory, not subdir/TODO

# 忽略当前目录下的TODO文件,并不是TODO子目录

/TODO

# ignore all files in the build/ directory 忽略所有的build子目录下的资源,包含该目录本身

build/

# ignore doc/notes.txt, but not doc/server/arch.txt 忽略doc目录下的所有以.txt结尾的直接子文件,但是不会忽略子目录中的txt文件

doc/*.txt

# ignore all .pdf files in the doc/ directory 忽略doc目录下的所有pdf文件,包含子目录中的也忽略

doc/**/*.pdf

版本回退
  1. 记录当前的版本号
  2. 使用reset --hard的方式回退到指定的版本
  3. 使用reset --soft的方式指定版本为最初记录的版本号,把指针挪回最初的位置。但是soft的方式只挪指针,不会更改工作区的文件。所以看上去就是基于最新版本把文件全部修改为了指定的版本文件的内容。
  4. 使用commit提交,就可以保留历史版本回退了

在这里插入图片描述

练习:
  1. 创建本地仓库,完成若干版本的添加、提交、回退操作

  2. 在本地仓库创建新的分支,在分支和主分支之间创建一些冲突,然后合并新分支到主分支

  3. 注册一个gitee或者github账号,创建一个远程仓库,跟本地仓库关联。把本地仓库推送到远端。

  4. 在本地另一个文件夹中,从远端克隆仓库到本地。进行修改操作,推送到远端。

  5. 在两个本地仓库都关联上远端后,人为创建一些冲突。解决冲突并最终同步代码。

  6. 多人创建开发小组,模拟实际开发中的情况,处理git协同。

  7. 注册一个gitee或者github账号,创建一个远程仓库,跟本地仓库关联。把本地仓库推送到远端。

  8. 在本地另一个文件夹中,从远端克隆仓库到本地。进行修改操作,推送到远端。

  9. 在两个本地仓库都关联上远端后,人为创建一些冲突。解决冲突并最终同步代码。

  10. 多人创建开发小组,模拟实际开发中的情况,处理git协同。

相关文章:

Git使用教程:最详细、最傻瓜、最浅显、真正手把手教

GITGIT版本控制版本控制的意义分布式图形化客户端环境搭建仓库的操作分支使用场景命令远程仓库操作生成公钥命令冲突忽略列表的配置时机配置方式版本回退练习:GIT 版本控制 把文件系统中的文件,按照修改的版本进行记录,进行管理的操作。 版…...

【面试题】Redis面试题汇总(无解答)

Redis为何这么快?缓存问题及解决入库和缓存策略问题及处理redis数据类型缓存过期删除策略内存淘汰机制Redis 回收进程如何工作的?Redis持久化RDB和AOFredis流式pipeline处理原生批命令 (mset, mget) 与 Pipeline 区别?Pipeline 有什么好处,为…...

RHCSA-用户和组管理和文件系统权限(3.11)

目录 用户(UID) 用户类别(UID): 用户的增删改查: 修改用户密码: 查看用户是否存在: 组(GID) 组的增删改查: 设置组密码: 用户…...

RK3588平台开发系列讲解(同步与互斥篇)信号量介绍

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、信号量介绍二、信号量API1、结构体2、API三、函数调用流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢上一章我们看了自旋锁的原理,本章我们一起学习下信号量的用法。 一、信号量介绍 和自旋锁一样,…...

One-YOLOv5 v1.2.0发布:支持分类、检测、实例分割

One-YOLOv5 v1.2.0正式发布。完整更新列表请查看链接:https://github.com/Oneflow-Inc/one-yolov5/releases/tag/v1.2.0,欢迎体验新版本,期待你的反馈。 1 新版本特性 1. 同步了Ultralytics YOLOv5的上游分支v7.0,同时支持分类、目…...

Zookeeper的Java API操作

Zookeeper的Java API操作一、先启动Zookeeper集群二、IDEA 环境搭建三、创建子节点四、获取子节点并监听节点变化五、判断 Znode 是否存在六、Watcher工作流程一、先启动Zookeeper集群 二、IDEA 环境搭建 1.创建一个Maven工程:ZookeeperProject 2.在pom.xml文件添…...

Web3:前端知识和后端知识基础

三.Web3:前端知识和后端知识基础 1.了解前端开发 2.了解JSP 3.了解JAVAWeb的三大组件 4.Servlet的使用 5.Filter的使用 6.了解thymeleaf 未更新 三.Web3:前端知识和后端知识基础 1.了解前端开发 ①前端架构 HTML超文本标记语言CSS层叠样式表JavaS...

调试射频TX和rx实验工程出现的问题与反思

1.今天用ADS仿真 发现 加上SMA 插损就到了4db,但是直接用传输线就在1db以内 这个问题我目前想到的排查思路是换成IPEX, 换成IPEX插损就变成2db 拿最新的7626去看 看到上面是SMA-3G 小针 还是结合参考的demo PCB来看 2.用射频的ipex测试LNA 发现校准…...

代码随想录刷题-数组总结篇

文章目录数组二分查找原理习题题目1思路和代码题目-2移除元素习题我的想法暴力解法双指针有序数组的平方习题暴力排序双指针长度最小的子数组习题暴力解法滑动窗口螺旋矩阵 II习题我的解法别人的解法总结数组 二分查找 本节对应代码随想录中:代码随想录-二分查找 …...

Qt读xml文件

QXmlStreamReaderQXmlStreamReader类通过简单的流式API为我们提供了一种快速的读取xml文件的方式。他比Qt自己使用的SAX解析方式还要快。所谓的流式读取即将一个xml文档读取成一系列标记的流,类似于SAX。而QXmlStreamReader类和SAX的主要区别就是解析这些标记的方式…...

Qt样式表

1>样式表介绍 样式表可通过 QApplication::setStyleSheet()函数将其设置到整个应用程序上,也可以使用 QWidget::setStyleSheet()将其设置到指定的部件或子部件上,不同级别均可设置样式表,称为样式表的层叠。样式表也可通过设计模式编辑样…...

Docker与微服务实战2022

基础篇(零基小白)1.Docker简介1.1 是什么问题:为什么会有docker出现?您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复? 答案就…...

Linux(传输层二)

文章目录0. 前言1. TCP协议1-1 TCP协议段格式1. TCP如何解包?2. TCP协议如何交付(应用层- - 客户)?3. 如何理解报文本身?4. 如何理解报文字段?1-2 确认应答(ACK)机制1-3 超时重传机制1-4 连接管理机制1. TC…...

4.Spring Cloud (Hoxton.SR8) 学习笔记—Nacos微服务治理、Nacos配置管理

本文目录如下:一、Nacos微服务治理Nacos 下载 与 启动Spring Cloud 集成 NacosIDEA 同一个 Application 启动多次Nacos - 配置集群Nacos - 设置负载均衡Nacos - 设置服务实例的权重二、Nacos 配置管理Nacos - 合理的把配置信息迁移到 Nacos 中Nacos - 配置命名规范N…...

卷王都在偷偷准备金三银四了...

年终奖没发; 简历石沉大海; 发消息只读不回 打开某招聘,看了看岗位,这个厂还不错,可是要求好高,我啥都不会。 “哎,算了,我简历还没更新呢,我躺到6月份拿到年终奖再跑…...

【C++的OpenCV】第十二课-OpenCV图像常用操作(九):找到图像的边界(轮廓)findContours()和drawContours()

🎉🎉🎉欢迎各位来到小白piao的学习空间!\color{red}{欢迎各位来到小白piao的学习空间!}欢迎各位来到小白piao的学习空间!🎉🎉🎉 💖💖&#x1f496…...

传奇开服流程—传奇单机架设教程

现在传奇私服还是那么的火爆,上次有报道发布站一年盈利几个亿,还是有很大的机会,很多玩家因为GM开服关服给折腾,刚充的钱服务器就关了,很是恼火,于是都想自己整个服开开,但又不知道从何下手&…...

【GoF 23】篇3:抽象工厂

1. 什么是抽象工厂? 提供一个创建一系列相关或互相依赖的对象接口,而无需指定它们的具体类。 抽象工厂是一个超级工厂,是其他工厂的工厂,或将简单工厂进一步抽象。 这样来理解: 我们将科技公司可以做的事情简要枚举…...

软考高级信息系统项目管理师系列之三十七:流程管理

软考高级信息系统项目管理师系列之三十七:流程管理 一、流程管理内容二、流程管理基础概念知识1.企业业务流程的整体目标2.业务流程的核心3.流程六要素4.良好的业务流程管理步骤5.企业流程管理的层次三、流程管理过程1.业务流程分析2.业务流程分析的主要方法3.业务流程分析工具…...

【WPS文字-Word】WPS文字设置段落居中对齐后公式左边右边的文字仍然无法跟公式对齐,公式和文字对不齐

一、问题背景 原来的公式左边文字是底端,右边文字是居中,我想着让左右文字全跟公式居中对齐,就全部设置了段落居中对齐。 结果发现,公式左右边的文字依然无法居中对齐。左边的文字是居中,但是右边的文字变成了顶端对…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...