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

Git 版本控制系统 笔记

概念:一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码

作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容【团队开发同一个项目的代码版本管理】

  • 1、Git 安装

之前写了,安装、配置、错误集都有:【这个是配合项目做的,可能更好理解】

Git 安装、配置并把项目托管到码云 Gitee_打不着的大喇叭的博客-CSDN博客

1)检验成功: 打开 bash 终端(git 专用)

这里 桌面鼠标右键 选择git bash 也可以,下面那个图是 vscode里面打开的

2)命令:git -v(查看版本号) 

3、Git 配置用户信息 

配置:用户名和邮箱,应用在每次提交代码版本时表明自己身份 

    git config --global user.name "码云的用户名"git config --global user.email "码云绑定的邮箱"


  • 2、掌握 Git 仓库

1、Git 仓库(repository):记录文件状态内容的地方,存储着修改的历史记录

        1)创建: 把本地文件夹转换成 Git 仓库:命令 git init  【在你项目中】

        2)从其他服务器上克隆 Git 仓库

2、需求:创建一个空白的 Git 仓库


  • 3、Git 的三个区域

  • 工作区:我们平常项目开发的文件夹【每写一部分,都可以说是一个进度】
  • 暂存区: 保存之前的储备区【在进行项目下一个内容前,可放进这暂存,项目更改,我们可以放进来替换上一个内容,继续暂存】
  • 版本库:提交 暂存区 真正已经准备好的内容,产生一个版本【可以在更改原项目后,回来看之前的保存在这的项目内容】

在开发时,你会把 需要的 项目文件添加到 已经 git init 的 文件夹中,把这个项目提交到 git 仓库,但是你在 提交到 暂存区时,发现 代码有点问题,花了两秒 改了一下,这时,不需要产生版本快照,你只要继续 git add . ,就会在暂存区替换之前暂存的内容,你再 提交到 版本库


  • 4、Git 文件状态

1、Git 文件 2 种状态:

        1)未跟踪:新文件,从未被 Git 管理过

        2)已跟踪:Git 已经知道和管理的文件

2、通过命令 git status 可查看当前文件状态【后面添加 -s 输出会更加简便些】

查看当前文件状态【后面添加 -s 输出会更加简便些】:git status

第一列是暂存区状态,第二列是工作区状态 

下面的两个 MM 意思:暂存区和工作区都已修改


  • 5、Git 暂存区使用

  • 暂存区:暂时存储,可以临时恢复代码内容,与版本库解耦
  • 暂存区 -> 覆盖 -> 工作区,命令:git restore 目标文件(注意:完全确认覆盖时使用)
  • 从暂存区移除文件,命令:git rm --cached 目标文件

1、查看暂存区的文件:

查看暂存区的文件 :   git ls-files

2、恢复成暂存区的文件内容:

恢复成暂存区的文件内容 :git restore 目标文件在根目录下路径

3、移除暂存区中的某个文件 

移除暂存区中的某个文件 :git rm --cached 目标文件在根目录下路径


  • 6、Git 回退版本

概念:把版本库某个版本对应的内容快照,恢复到工作区/暂存区

  • 注意1:只有记录在版本库的提交记录才能恢复
  • 注意2:回退后,继续修改->暂存->提交操作即可(产生新的提交记录过程)
  • 注意3:回退后,版本库各个版本还在,没有被删除

查看之前提交版本库的历史:git log --oneline

1、查看之前提交版本库的历史 :【回退的版本,不会出现在这里】git log --oneline2、查看完整的日志 :git reflog --oneline回车输出:[版本号] [提交的信息]
例子如图:a219584 1.登录页面-标签部分准备

假设: 我们 提交到 版本库 三次,我们需要回退到第一次提交时【第一次 index.html】

  • 第一次:提交 html 页面【版本库:index.html】
  • 第二次:提交 css 样式【版本库:index.html、index.css】
  • 第三次:提交 js 文件【版本库:index.html、index.css、index.js】

现在情况:工作区和暂存区【index.html、index.css、index.js,可能你修改了工作区的文件,并提交到了 暂存区 ,但是没有提交到 版本库

1)git reset --soft 版本号(其他文件未跟踪)【回退到第一次】

使用这个命令,会把 版本库 的 【第一次:index.html】覆盖 工作区和暂存区 的【index.html】,但是,原本的【index.css、index.js】没有变

现在情况:工作区和暂存区【index.html(第一次提交的版本)、index.css、index.js】 

2)git reset --hard 版本号【回退到第一次】

使用这个命令,会把 版本库 的 【第一次:index.html】覆盖 工作区和暂存区 的【index.html】,但是,原本的【index.css、index.js】会被删除

现在情况:工作区和暂存区【index.html(第一次提交的版本)

如果第一次提交版本不满意,要恢复第三次的版本【查看完整的日志 :git reflog --oneline】查看第三次版本的版本号,然后 【git reset --hard 第三次提交的版本号】

3)git reset --mixed 版本号 (与 git reset 等价)【回退到第一次】

使用这个命令,会把 版本库 的 【第一次:index.html】覆盖 工作区和暂存区 的【index.html】,但是,工作区的【index.css、index.js】没有变,不过暂存区只有【index.html(第一次提交的版本)

现在情况:工作区和暂存区【index.html(第一次提交的版本)、index.css、index.js】

1、 git reset --soft 版本号2、 git reset --hard 版本号3、 git reset --mixed 版本号

4git reset --soft/hard/mixed 版本号  总结

 


  • 7、Git 忽略不需要的文件

无论文件写在 根目录下 哪里,都会被找到忽略 ,并且文件名变暗


  • 8、Git 分支

概念:本质上是指向提交节点的可变指针,默认名字是 master

注意:HEAD 指针影响工作区/暂存区的代码状态

提示:如下图,我们创建 content分支 开发别的业务,但是我们还想修bug,不影响 content分支 ,这时,我们切换回到 master分支,再创建 login-bug分支 来修bug,这样互不影响了

1、创建分支命令:git branch 分支名2、切换分支命令:git checkout 分支名3、查看所有分支git branch

步骤:


  • 9、分支-合并与删除

1、切回到要合入的分支上:git checkout master2、合并其他分支过来:git merge login-bug3、删除合并后的分支指针:git branch -d login-bug


  • 10、分支-合并冲突

概念:不同分支中,对同一个文件的同一部分修改,Git 无法干净的合并,产生合并冲突

假设:

1、基于 master 新建 publish 分支,修改内容页面的 html 文件的 title 标签,并提交一次

2、切换到 master,也在修改内容页面的 html 文件的 title 标签,并提交一次

解决冲突后,进行提交: 

 


  • 11、Git 远程仓库 

概念:托管在因特网或其他网络中的你的项目的版本库

作用:保存版本库的历史记录,多人协作

创建:公司自己服务器 / 第三方托管平台(Gitee,GitLab,GitHub...)

1、注册第三方托管平台网站账号

地址:工作台 - Gitee.com

2、新建仓库得到远程仓库 Git 地址

3、本地 Git 仓库添加远程仓库原点地址

1、本地 Git 仓库添加远程仓库原点地址
命令: git remote add 远程仓库别名 远程仓库地址
例如: git remote add origin https://gitee.com/xxx/work.git2、本地 Git 仓库推送版本记录到远程仓库
命令: git push -u 远程仓库别名 本地和远程分支名
例如: git push -u origin master
完整写法:git push --set-upstream origin master:master


  • 12、Git 远程仓库-克隆 

  • 克隆:拷贝一个 Git 仓库到本地,进行使用
  • 命令:git clone 远程仓库地址,例如:git clone https://gitee.com/xxx/work.git
  • 效果:在运行命令所在文件夹,生成 work 项目文件夹(包含版本库,并映射到暂存区和工作区)
  • 注意1:Git 本地仓库已经建立好和远程仓库的链接
  • 注意2:仓库公开随意克隆,推送需要身为仓库团队成员 


  • 13、Git 多人协同开发

需求:小传新代码共享给小智

步骤:

小传开发代码 -> 工作区 -> 暂存区 -> 提交 -> 拉取(可选)-> 推送

小智 -> 拉取(后续也可以开发代码 -> ... -> 推送)

想要看到别人同步上去的最新内容:git pull origin master 等价于下面两条命令相加:git fetch origin master:master(获取远程分支记录到本地,未合并)git merge origin/master (把远程分支记录合并到所在分支下)

  • 14、VSCode 中使用 Git

使用:源代码管理,进行暂存,撤销,对比差异,提交等操作 


  • 15、Git 常用命令 

相关文章:

Git 版本控制系统 笔记

概念:一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码 作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容【团队开发同一个项目的代码版本管理】 1、Git 安装 之前写了&#xff0…...

VRTK4⭐四.和 UI 元素交互

文章目录 🟥 安装Tilia Unity.UI🟧 配置射线与UI交互器1️⃣ 配置直线射线2️⃣ 配置UI交互器 🟨 配置UI1️⃣ 更新EventSystem2️⃣ 进行Canvas设置 我们要实现的功能: 右手触摸到圆盘:显示直线射线 右手圆盘键按下:与选中UI交互 &#x1f7…...

【STM32】SDIO—SD 卡读写01

基于stm32f103 基于零死角玩转STM32—F103指南者 简介 1.SD 卡总共有 8 个寄存器,用于设定或表示 SD 卡信息。 2.SD卡的寄存器不能像STM32那样访问,而是利用命令访问,SDIO 定义了 64 个命令。SD 卡接收到命令后,根据命令要求对…...

SpringCloud Alibaba 整合Sentinel的基本使用

文章目录 一、什么是Sentinel二、Sentinel 的主要特性1. 流量控制:2. 熔断降级:3. 实时监控:4. 规则配置:5. 集成方便: 三、Sentinel 分为哪几部分:1. 核心库(Java 客户端)2. 控制台&#xff08…...

Linux中如何执行命令

目录 命令格式: 命令分类: 命令帮助: 1、man 2、help 3、--help 4、info命令 终止命令: 补全命令: 1)补全命令: 2)补全文件名和目录名: 命令格式:…...

基于51单片机的智能病房呼叫系统的设计与实现

一、前言 显示床位号使用到4位数码管,为了节约单片IO口,使用TM1637来驱动数码管。 二、TM1637驱动芯片简介 三、电路设计,使用矩阵按键来模拟每个床位的呼叫按钮 四、编写51单片机代码 void delay_ms(u16 n) {u8 i;while(n--){i 111;while…...

js在一个时间范围内产生一个随机时间

js使用使用到Math.random()方法实现在一个时间范围内产生一个随机时间。 /*在时间范围内产生一个随机时间*/ function randomDate(start, end) {if (start ! null && end ! null) {const _start new Date(start).getTime();const _end new Date(end).getTime();cons…...

Javascript Date 对象相关知识

Javascript Date 对象相关知识 参考文章虹猫1992 创建 Date 对象. 方法一: 自动使用当前的日期和时间作为其初始值. var date new Date();方法二:将给定的毫秒数转换为使用的时间,new Date(dateVal) 如果是数字值,dateVal表示指定日期与1970年1月1日午…...

Vim快捷用法

以下为文本操作 1.快速切换 行首^(shift4) 行尾$(shift6) 文章开始gg 位置末尾G 向下翻页CTRLB 向上翻页CTRLF 2.删除内容 删除一行 dd 3.复制粘贴 复制一行yy 粘贴 p 4.撤销操作 撤销操作 u 恢复操作ctrlr 以下都为底行操作 1.显示行号 set nu 2.多文件分屏阅读 加入阅…...

Stream流的常用方法(自用)

自用的笔记, 有🚩 需要多看 基本数据 自定义实体 Data class Student{private String name;private Integer age;private Double height;public Student() {} }假数据 Student s1 new Student(); s1.setAge(20); s1.setName("cookie"); s1.setHeight(…...

【python函数】torch.nn.Embedding函数用法图解

学习SAM模型的时候,第一次看见了nn.Embedding函数,以前接触CV比较多,很少学习词嵌入方面的,找了一些资料一开始也不是很理解,多看了两遍后,突然顿悟,特此记录。 SAM中PromptEncoder中运用nn.Emb…...

with ldid... /opt/MonkeyDev/bin/md: line 326: ldid: command not found

吐槽傻逼xcode 根据提示 执行了这个脚本/opt/MonkeyDev/bin/md 往这里面添加你brew install 安装文件的目录即可...

[golang gui]fyne框架代码示例

1、下载GO Go语言中文网 golang安装包 - 阿里镜像站(镜像站使用方法:查找最新非rc版本的golang安装包) golang安装包 - 中科大镜像站 go二进制文件下载 - 南京大学开源镜像站 Go语言官网(Google中国) Go语言官网(Go团队) 截至目前(2023年9月17日&#x…...

2000-2018年各省能源消费和碳排放数据

2000-2018年各省能源消费和碳排放数据 1、时间:2000-2018年 2、范围:30个省市 3、指标:id、year、ENERGY、COAL、碳排放倒数*100 4、来源:能源年鉴 5、指标解释: 2018年碳排放和能源数据为插值法推算得到 碳排放…...

C# ref 学习1

ref 关键字用在四种不同的上下文中; 1.在方法签名和方法调用中,按引用将参数传递给方法。 2.在方法签名中,按引用将值返回给调用方。 3.在成员正文中,指示引用返回值是否作为调用方欲修改的引用被存储在本地,或在一般…...

MQ - 08 基础篇_消费者客户端SDK设计(下)

文章目录 导图Pre概述消费分组协调者消费分区分配策略轮询粘性自定义消费确认确认后删除数据确认后保存消费进度数据消费失败处理从服务端拉取数据失败本地业务数据处理失败提交位点信息失败总结导图 Pre...

Flutter层对于Android 13存储权限的适配问题

感觉很久没有写博客了,不对,的确是很久没有写博客了。原因我不怎么想说,玩物丧志了。后面渐渐要恢复之前的写作节奏。今天来聊聊我最近遇到的一个问题: Android 13版本对于storage权限的控制问题。 我们都知道,Andro…...

Android kotlin开源项目-功能标题目录

目录 一、BRVAH二、开源项目1、RV列表动效(标题目录)2、拖拽与侧滑(标题目录)3、数据库(标题目录)4、树形图(多级菜单)(标题目录)5、轮播图与头条(标题目录)6…...

Linux下,基于TCP与UDP协议,不同进程下单线程通信服务器

C语言实现Linux下&#xff0c;基于TCP与UDP协议&#xff0c;不同进程下单线程通信服务器 一、TCP单线程通信服务器 先运行server端&#xff0c;再运行client端输入"exit" 是退出 1.1 server_TCP.c **#include <my_head.h>#define PORT 6666 #define IP &qu…...

qt功能自己创作

按钮按下三秒禁用 void MainWindow::on_pushButton_5_clicked(){// 锁定界面setWidgetsEnabled(ui->centralwidget, false);// 创建一个定时器&#xff0c;等待3秒后解锁界面QTimer::singleShot(3000, this, []() {setWidgetsEnabled(ui->centralwidget, true);;//ui-&g…...

Linux网络编程:使用UDP和TCP协议实现网络通信

目录 一. 端口号的概念 二. 对于UDP和TCP协议的认识 三. 网络字节序 3.1 字节序的概念 3.2 网络通信中的字节序 3.3 本地地址格式和网络地址格式 四. socket编程的常用函数 4.1 sockaddr结构体 4.2 socket编程常见函数的功能和使用方法 五. UDP协议实现网络通信 5.…...

【后端速成 Vue】初识指令(上)

前言&#xff1a; Vue 会根据不同的指令&#xff0c;针对标签实现不同的功能。 在 Vue 中&#xff0c;指定就是带有 v- 前缀 的特殊 标签属性&#xff0c;比如&#xff1a; <div v-htmlstr> </div> 这里问题就来了&#xff0c;既然 Vue 会更具不同的指令&#…...

爬虫 — Scrapy-Redis

目录 一、背景1、数据库的发展历史2、NoSQL 和 SQL 数据库的比较 二、Redis1、特性2、作用3、应用场景4、用法5、安装及启动6、Redis 数据库简单使用7、Redis 常用五大数据类型7.1 Redis-String7.2 Redis-List (单值多value)7.3 Redis-Hash7.4 Redis-Set (不重复的)7.5 Redis-Z…...

tcpdump常用命令

需要安装 tcpdump wireshark ifconfig找到网卡名称 eth0, ens192... tcpdump需要root权限 网卡eth0 经过221.231.92.240:80的流量写入到http.cap tcpdump -i eth0 host 221.231.92.240 and port 80 -vvv -w http.cap ssh登录到主机查看排除ssh 22端口的报文 tcpdump -i …...

计算机网络运输层网络层补充

1 CDMA是码分多路复用技术 和CMSA不是一个东西 UPD是只确保发送 但是接收端收到之后(使用检验和校验 除了检验的部分相加 对比检验和是否相等。如果不相同就丢弃。 复用和分用是发生在上层和下层的问题。通过比如时分多路复用 频分多路复用等。TCP IP 应用层的IO多路复用。网…...

java CAS详解(深入源码剖析)

CAS是什么 CAS是compare and swap的缩写&#xff0c;即我们所说的比较交换。该操作的作用就是保证数据一致性、操作原子性。 cas是一种基于锁的操作&#xff0c;而且是乐观锁。在java中锁分为乐观锁和悲观锁。悲观锁是将资源锁住&#xff0c;等之前获得锁的线程释放锁之后&am…...

1786_MTALAB代码生成把通用函数生成独立文件

全部学习汇总&#xff1a; GitHub - GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes…...

2023/09/19 qt day3

头文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QDebug> #include <QTime> #include <QTimer> #include <QPushButton> #include <QTextEdit> #include <QLineEdit> #include <QLabel> #include &l…...

Docker 学习总结(78)—— Docker Rootless 让你的容器更安全

前言 在以 root 用户身份运行 Docker 会带来一些潜在的危害和安全风险,这些风险包括: 容器逃逸:如果一个容器以 root 权限运行,并且它包含了漏洞或者被攻击者滥用,那么攻击者可能会成功逃出容器,并在宿主系统上执行恶意操作。这会导致宿主系统的安全性受到威胁。 特权升…...

如何使用ArcGIS Pro将等高线转DEM

通常情况下&#xff0c;我们拿到的等高线数据一般都是CAD格式&#xff0c;如果要制作三维地形模型&#xff0c;使用栅格格式的DEM数据是更好的选择&#xff0c;这里就为大家介绍一下如何使用ArcGIS Pro将等高线转DEM&#xff0c;希望能对你有所帮助。 创建TIN 在工具箱中选择“…...

看电视剧的免费网站/推广引流最快的方法

跨浏览器 跨域资源共享 解决方案参考文章&#xff1a; &#xff08;1&#xff09;跨浏览器 跨域资源共享 解决方案 &#xff08;2&#xff09;https://www.cnblogs.com/kasmine/p/6440571.html 备忘一下。...

网站开发费计入什么会计科目/怎么建立自己的企业网站

注&#xff1a;继前段时间连载多篇 ELF 相关文章后&#xff0c;今次再连载 4 篇&#xff0c;每周 1 篇&#xff0c;欢迎关注并分享。分享本文到朋友圈后再加微信 tinylab 可以申请整个系列的 PDF 合集&#xff08;共 15 篇&#xff0c;126 页&#xff09;。Linux ELF 系列文章合…...

老榕树建站软件/百度指数搜索榜

以一个马戏团要在某小镇表演而作的市场活动为例&#xff1a; 如果你在街上作一个牌子&#xff0c;写上“xxx马戏团将于x月x日在本镇上演大戏”&#xff0c;这就是在做“广告”。 如果你在马戏团里找一头大象&#xff0c;把这个牌子放在大象的背上&#xff0c;在大街上来回走动&…...

wordpress 上传任意附件/搜狐视频

如何判断R为第几范式&#xff1f; 已知一个关系模式的属性之间的语义&#xff0c;也就是相互依赖的关系&#xff0c;如何判断该模式满足第几范式&#xff1f; 1、首先要通过语义把属性之间的函数依赖关系列出来&#xff0c; 2、然后确定哪些属性组合可以候选码&#xff0c;从…...

flash 做网站教程/优化大师官网

集合框架(collections framework)首先要明确&#xff0c;集合代表了一组对象(和数组一样&#xff0c;但数组长度不能变&#xff0c;而集合能)。Java中的集合框架定义了一套规范&#xff0c;用来表示、操作集合&#xff0c;使具体操作与实现细节解耦。其实说白了&#xff0c;可以…...

平面设计做名片都去那个网站/百度seo报价

左婉琳 胡志刚摘要&#xff1a;为了设计出更加满足用户需求的办公设备&#xff0c;减轻办公综合症对人们的危害。本文以不同特征的人群为调研对象&#xff0c;通过问卷调查以及SPSS软件&#xff0c;分析了现阶段办公桌的用户体验及期望。得知人们对办公桌自身的属性和功能性方面…...