自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(170)
  • 收藏
  • 关注

原创 音视频OSD完全教程

目录前言OSD 介绍学习路线基础知识ASCII点阵字库叠加信息相关操作GB2312点阵字库UNICODE UTF-8矢量字库前言感谢海康高级工程师宇哥和安霸高级工程师杰哥对我的无私帮助现有的博客内容都是抄来抄去,不成体系希望我整理的内容能够对行业有所帮助OSD 介绍on screen display就是将信息叠加到视频中更通俗的讲,就是写字有人说这一块内容简单,确实不难。觉得简单的可以直接退出不必浪费时间学习路线OSD是音视频dsp绕不开的一部分内容,内容较少,说不上难但一定算不上

2021-04-21 20:21:57 39

原创 git完全教程总结

前言很多人学完linux后不知道该学什么,我的建议是——先学git因为当你在工作中,出了必备的基础知识,还要学会与人合作。如何将你开发的小功能整合到整个项目的大框架中如何让你的实验性代码不影响到大框架中的代码性能如何让你在工作到一半的时候修改突然出现的bug这些都是会出现的情况,为了应对这些情况,新入职的员工就需要去学习git以下是我搜集资料,并且自己实践整理的git教程。希望大家有所收获Git基础知识以下两篇主要包含了git 的背景以及学习要做的准备工作git完全教程:001—G

2021-03-23 07:56:35 28

原创 音视频基础认知——ISP与DSP

很多人在学习完linux后不知道应该学什么,并且对于音视频领域的认知只限于道听途说。这里介绍两个音视频的方向——ISP与DSPISPISP——Image Signal Process图像信号处理我们先来看这张图当看到系统框架图的时候千万不要害怕,一个块一块,一个功能一个功能去看,就可以清晰很多。image sensor core——图像传感器核心这一部分主要是用于视频采集,就是sensor把拍到的东西(模拟信号)转化成电子设备看得懂的东西(数字信号),此时的数字信号是视频流,格式为raw

2021-03-19 10:53:57 153 1

原创 视频编解码——H.264码流封装格式:流格式与包格式

目录H.264的码流封装格式NAL Unit字节流格式H.264的码流封装格式在H.264语法元素进行编码之后,生成的输出数据都封装为NALU(nal unit)进行传递。多个NALU组合在一起就形成了输出码流对于不同的应用场景,NALU规定了一种通用的格式来适应不同类型的传输封装类型,一般分为两大类:Annex-B字节流格式大部分编码器的默认输出格式每个NAL Unit以规定格式的起始码分割起始码:0x 00 00 00 01 或 0x 00 00 01RT

2021-05-06 09:09:55 8

原创 视频编解码——使用H.264视频编解码器JM进行YUV图像序列的编解码

目录常见H.264视频编码器常见H.264视频编码器X264(只有编码没有解码)是由Video LAN组织制作的,这个组织还制作了一款著名的开源媒体播放器VLCJM的参考代码托管在hhi组织(德国的研究机构),我们可以在这个机构中获取JM最新的源代码。最近经典的版本是JM8.6,虽然没有包含最新的内容,但在开始阶段以及足够我们进行学习...

2021-04-28 21:19:50 29

原创 视频编解码——H.264的基本介绍

目录背景与基本概念特点H.264的应用场景编码整体架构编码结构H.264对一个宏块编码H.264标准采用的编码工具帧内预测帧间预测MV的亚像素差值整数变换与量化无损熵编码其他技术本文是对H.264编码标准研究系列的开端背景与基本概念发起者:ITU-T的VCEG(Video Coding Experts Group)发起时间:2003最初版本支持8bit/sample,4:2:0色度采样,主要针对大部分通用视频处理与传输场合,(#`O′)对特殊应用做处理特殊应用可能需求:源视频数据精度

2021-04-28 14:54:57 16

原创 视频编解码——主流视频编码标准的发展(H.261/H.263/MPEG-1/MPEG-2/MPEG-4))

目录制定标准的组织两种编码方式基于波形的编码基于内容的编码H.261系统图信源编码器复合编码器H.263MPEG-1码流结构MPEG-2码流结构MPEG-4制定标准的组织这些标准主要由两个组织制定。国际电信联盟——ITU-T国际标准化组织——ISO目前世界上影响力最强的视频编码标准基本都出自于这两个组织。除了这两个组织,还有Google——VP8/VP9Microsoft——VC-1国产自主标准——AVS/AVS+/AVS2两种编码方式基于波形的编码特点编码的数据正对每

2021-04-28 09:50:41 2

原创 视频编解码——视频编解码器工作原理

目录什么是视频编解码器为什么需要视屏编解码器视频编码器与数字视频容器时评编码器的历史什么是视频编解码器简单来说就是用于压缩或解压数字视频的软件或硬件编码是信息从一种形式或格式转换为另一种形式的过程,解码是编码的反向。适用于视频编码是将视频、音频的原始格式的文件通过压缩技术转换成另一种格式(视频如h.264,h.265,m-jpeg等)。解码是编码的反向过程。应用中,一般是将h.264,h.265格式数据解码成如YUV格式裸流交给显示器显示。为什么需要视屏编解码器需要在有限的带宽或存储空间

2021-04-27 14:48:05 37

原创 视频编解码——消除视频冗余的方法及原理

目录为什么要消除冗余颜色、亮度和眼睛帧类型时间冗余(帧间预测)查看运动向量空间冗余(帧内预测)查看帧内预测编码冗余视觉冗余为什么要消除冗余首先来计算一下一个一小时的视频大小。假设分辨率为720p,帧率为30fps,则内存为1280x720x24x30x3600,共占用278GB。仅仅使用无损数据压缩算法——如 DEFLATE(被PKZIP, Gzip, 和 PNG 使用)——也无法充分减少视频所需的带宽,我们需要找到其它压缩视频的方法。为此,我们可以利用视觉特性:和区分颜色相比,我们区分亮度要

2021-04-26 19:04:12 16

原创 视频编解码——帧类型

目录I 帧(帧内编码,关键帧)P 帧(预测)B 帧(双向预测)总结假设我们一段 30fps 的影片,这是最开始的 4 帧我们可以在帧内看到很多重复内容,如蓝色背景,从 0 帧到第 3 帧它都没有变化。为了解决这个问题,我们可以将它们抽象地分类为三种类型的帧。I 帧(帧内编码,关键帧)I 帧(可参考,关键帧,帧内编码)是一个自足的帧。它不依靠任何东西来渲染,I 帧与静态图片相似。第一帧通常是 I 帧,但我们将看到 I 帧被定期插入其它类型的帧之间。P 帧(预测)P 帧利用了一个事实:当前的画面

2021-04-26 15:04:55 7

原创 视频编解码——基础知识(图像、分辨率、宽高比、帧率与码率)

目录图像编码彩色图像的其它方法其他的图像编码方式分辨率宽高比举例帧率码率/比特率图像视频的本质就是图像,一段视频是由大量图像按照一定速度播放产生的。一个图像可以视作一个二维矩阵。如果将色彩考虑进来,我们可以做出推广:将这个图像视作一个三维矩阵——多出来的维度用于储存色彩信息。如果我们选择三原色(红、绿、蓝)代表这些色彩,这就定义了三个平面:第一个是红色平面,第二个是绿色平面,最后一个是蓝色平面。我们把这个矩阵里的每一个点称为像素(图像元素)。像素的色彩由三原色的强度(通常用数值表示)表示。例

2021-04-26 14:12:37 12

原创 音视频OSD——使用freetype将矢量字库的信息叠加至YUV

目录freetypes使用步骤1)包含头文件:2) 初始化库:3)加载face对象:4)设置字体大小5)设置字体位置,以及旋转度数:6)加载字形图像准备矢量字库代码.c.h效果叠加至YUVfreetypesFreeType是一个完全开源的、可扩展、可定制且可移植的字体引擎,它提供TrueType字体驱动的实现统一的接口来访问多种字体格式文件下载freetypestar -xjf freetype-2.4.10.tar.bz2cd freetype-2.4.10/./configure

2021-04-23 09:55:58 20

原创 音视频OSD——将64*64的UNICODE_UTF-8字库的信息叠加至YUV图像

目录分析UTF-8编码字库制作分析字符编码——详解常用字符集(ASCII,ISO8859-1,GB2312,GBK,Unicode)和字符编码(UTF-8,UTF-16)分析UTF-8编码UTF-8编码中,使用的是变成的字节序列表示字符,字符对应的代码点code point可能使用的是1-4个字节,这样一个字节就是一个代码单元。一个代码点code point可能由1-4个代码单元code unit组成十进制Unicode编码UTF-8字节流0-1270x000000-0x00

2021-04-21 19:00:12 6

原创 音视频OSD——Unicode编码与UTF-8编码转换

目录转换原理代码.c.h检验转换原理十进制Unicode编码0-1270x000000-0x00007F128-20470x000080-0x0007FF2048-655350x000800-0x00FFFF65535-1141110x010000-0x10FFFF一般汉字都是在第三栏,UTF-8编码形如:1110xxxx 10xxxxxx 10xxxxxxunicode汉字编码一般为16位形如:xxxx xxxx xxxx xxxx转换方式如

2021-04-21 16:47:11 10

原创 音视频OSD——将64*64的GB2312字库的信息叠加至YUV图像

目录前言制作字库编码方式分析拿出一个字模.h文件.c文件效果通过输入来自动获取区位码.c效果最终代码.c.h效果前言之前我们学习了Ascii字库的叠加操作音视频OSD——将816字库的时间信息叠加至YUV图像音视频OSD——将6464字库的时间信息叠加至YUV图像音视频OSD——修改叠加信息的位置音视频OSD——修改叠加在yuv420p图像上信息的颜色音视频OSD——修改叠加信息的尺寸接下来进行汉字的学习在学习之前,需要理解汉字相关编码的知识字符编码——一些基本概念字符编码——简体中文

2021-04-20 16:16:58 17

原创 音视频OSD——修改叠加信息的尺寸

目录分析原理代码分析在实际场景中,可能出现字模尺寸使用不合理的情况,此时就需要对OSD叠加的信息进行相应的缩放。思路如下:放大:位图中每个点,在YUV图像中画四个点,即放大两倍缩小:位图中取奇数行或偶数行叠加至YUV图像,即缩小两倍在实际应用场景中,缩放用的不是很多,一般都是换一个尺寸的字库。如果放大两倍以上,字的锯齿感就会非常明显,如下图放大后就会很难看,如下图放大两倍以上就要换字库。缩小只能通过抽点来实现,抽完之后字会歪歪扭扭很难看。所以一般实现缩小都是换字库。

2021-04-19 15:34:19 16

原创 如何调用其他文件的static函数

方法:include 目标static函数的.c文件通过函数包住static函数,另一文件调这个函数通过static的地址调用优点可能是为了兼容性这么玩,缺点如果一个大工程这样写,文件会很多很乱不容易规划第一种//a.c#include <stdio.h>//#include "b.h"#include "b.c"int main(void){ test_func(); return 0;}// b.c#include <stdio.h

2021-04-16 19:10:37 17

原创 音视频OSD——修改叠加在yuv420p图像上信息的颜色

目录预备知识准备图片分析映射关系代码效果代码优化.c.h效果预备知识字符编码——一些基本概念字符编码——详解常用字符集(ASCII,ISO8859-1,GB2312,GBK,Unicode)和字符编码(UTF-8,UTF-16)音视频OSD——制作ASCII点阵字模并叠加到YUV图像中音视频OSD——将816字库的时间信息叠加至YUV图像音视频OSD——将6464字库的时间信息叠加至YUV图像音视频OSD——修改叠加信息的位置以上内容的叠加都是叠加在yuv的y分量上,若要改变颜色,则需要对y

2021-04-15 20:17:28 15

原创 音视频OSD——修改叠加信息的位置

介绍了修改OSD叠加位置的方法,防止OSD跨行叠加以及叠加内存越界的保护

2021-04-15 13:48:18 26

原创 音视频OSD——将64*64字库的时间信息叠加至YUV图像

目录前言分析制作不同尺寸字库判断图像尺寸前言音视频OSD——制作ASCII点阵字模并叠加到YUV图像中音视频OSD——将时间信息叠加至YUV图像前面我们制作了字库并且将时间信息叠加到了一个640x360的图像上,但之前的代码非常的不严谨。如果输入的图像是一个1080p的,那么8x16的字库显然就不够了,需要使用48x48或64x64的字库。如果我们需要叠加汉字,那么Ascii的字库就不能用了,就需要使用GB2312、GBK或UNICODE。分析步骤如下1、制作不同尺寸的字库2、分析图像

2021-04-09 15:36:55 67

原创 ffmpeg——linux搭建ffmpeg环境

目录ffmpeg介绍环境搭建NASMYasmlibx264libx265libvpxlibfdk-aaclibmp3lamelibopuslibaomlibsvtav1下载ffmpeg安装包并解压ffmpeg介绍FFmpeg是领先的多媒体框架,能够解码,编码, 转码,mux,demux,流,过滤和播放人类和机器创建的几乎所有内容。它支持最模糊的古代格式,直至最前沿。无论它们是由某些标准委员会,社区还是公司设计的。它还具有高度的可移植性:FFmpeg可以在各种构建环境,机器体系结构和配置下,跨Linux,

2021-04-08 13:46:54 40

原创 音视频OSD——将8*16字库的时间信息叠加至YUV图像

↓前置学习↓音视频OSD——制作ASCII点阵字模并叠加到YUV图像中目录需求分析分析获取时间拿出对应字模检验叠加至初始位置.c文件头文件效果字体颜色、大小、位置可调需求分析将时间信息叠加到YUV图像中,并且位置、大小、颜色可调分析步骤如下:1、将当前时间放在字符串中2、依次找到每个字符的Ascii字模3、叠加在YUV图像的初始位置4、字体颜色大小可调5、位置可调获取时间使用sys/time.h中的自带函数gettimeofday和strftime#include <s

2021-04-08 08:14:23 69

原创 模块化编程的思想

今天看我们项目代码的时候发现这样一个奇怪的封装IMP_OSD_CreateGroup是君正底层SDK中的函数,LUX_OSD_CreateGroup是我们DSP层的函数为什么一样的函数,参数也一样,要换个名字?这就要涉及到模块化编程的概念:我们的程序是这样设计的模块化的设计,规定只能上层调用对应下层的API,如果TuYa要调用Ingenic的函数,那么就需要将Ingenic的API封装成LUX头,方便后期调试在这篇中也有提到:音视频DSP中的IVS算法处理流程还有一种情况:现在需要在屏幕

2021-04-02 09:36:17 19

原创 音视频OSD——制作ASCII点阵字模并叠加到YUV图像中

目录流程ASCII字库的制作生成ASCII字库读取字库中的一个字符检验位图的制作在终端打印叠加到YUV的Y分量效果功能合并.c文件.h文件效果爷是代码诗人流程1、制作一个ASCII字库2、fopen将字库读到内存中3、制作对应的字模(BMP)4、将BMP叠加到一个YUV图像上1、只叠加Y分量2、支持修改颜色5、查看效果ASCII字库的制作生成ASCII字库使用fontMaker工具,做一组8*16的点阵字库如字符A的显示如下:当然,有可能你的图不是这样的,这是由于字体不同导

2021-04-01 21:22:18 55

原创 字符编码——详解常用字符集(ASCII,ISO8859-1,GB2312,GBK,Unicode)和字符编码(UTF-8,UTF-16)

目录ASCII由来包含哪些字符采用什么字符编码,如何编码每个字符占几个字节ISO8859-1由来包含哪些字符采用什么字符编码,如何编码每个字符占几个字节GB2312由来包含哪些字符采用什么字符编码,如何编码每个字符占几个字节GBK由来包含哪些字符采用什么字符编码,如何编码每个字符占几个字节Unicode由来包含哪些字符采用什么字符编码,如何编码的UTF8UTF-16UTF-32总结本文详细分析常用字符集ASCIIISO8859-1GB2312GBKUnicode字符编码UTF-8U

2021-03-26 10:19:00 109

原创 字符编码——简体中文编码中区位码、国标码、内码、外码、字形码的区别及关系

目录区位码国标码(交换码)内码(机内码)区位码、国际码、内码的转换为什么要加上20H为什么加上80H本文以GB2312为例,讲述区位码、国标码、内码、外码、字形码区位码整个GB2312字符集分成94个区,每区有94个位,每个区位上只有一个字符,即每区含有94个汉字或符号,用所在的区和位来对字符进行编码(实际上就是字符编号、码点编号),因此称为区位码。换言之,GB2312将包括汉字在内的所有字符编入一个94 * 94的二维表,行就是“区”、列就是“位”,每个字符由区、位唯一定位,其对应的区、位编号合并

2021-03-25 10:02:53 179

原创 字符编码——一些基本概念

这里写自定义目录标题字库字模位图(bmp--bit map)字库上图截取了GB2312字库的一部分。这整个二维数组就是字库,每一行就是一个字符字模拿出单独一行,就是一个字如下图,就是字模字模就是一个矩阵,里面0和1排列形成一个字左边是字模,右边是排列形成的字符上一个目录的字库中,一整行表示一个字。这一整行是将字模里的数据放在一行,只是字模在字库/内存中的存储形势。字库中的一行不是字模位图(bmp–bit map)...

2021-03-24 17:15:30 33

原创 点阵字库与矢量字库

目录预备知识字库字模位图(bmp--bit map)叠加显示点阵字库占用空间存储方式矢量字库存储显示作为音视频OSD的知识基础预备知识字库上图截取了GB2312字库的一部分。这整个二维数组就是字库,每一行就是一个字符字模拿出单独一行,就是一个字如下图,就是字模字模就是一个矩阵,里面0和1排列形成一个字左边是字模,右边是排列形成的字符上一个目录的字库中,一整行表示一个字。这一整行是将字模里的数据放在一行,只是字模在字库/内存中的存储形势。字库中的一行不是字模位图(bmp–bit

2021-03-24 14:19:44 79

原创 git完全教程:000—linux下Git源码编译

源码下载链接依赖库opensslopenssh-client/openssh-serverzlib1g-devperl-5.22libcurl4-openssl/gnutls-devlibssl-devlibexpact1-devgettextunzipwishexpactlibintl-perlasciidoc-8.4.1xmltodocbook2x-0.8.3texi2htmldblatex-0.2.7以上库,都使用apt-get依赖库安装命令安装软件包 s

2021-03-23 07:55:21 15

原创 git完全教程:017—Git中的Rebase

在上一节我们看到了,多人在同一个分支上协作时,很容易出现冲突。即使没有冲突,后push的童鞋不得不先pull,在本地合并,然后才能push成功。每次合并再push后,分支变成了这样:$ git log --graph --pretty=oneline --abbrev-commit* d1be385 (HEAD -> master, origin/master) init hello* e5e69f1 Merge branch 'dev'|\ | * 57c53ab (origi

2021-03-22 19:37:43 7

原创 git完全教程:016—Git中的多人协作

目录多人协作流程克隆远程仓库推送分支抓取分支总结多人协作流程1、首先,可以试图用git push origin <branch-name>推送自己的修改;2、如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;3、如果合并有冲突,则解决冲突,并在本地提交;4、没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!5、如果git pull提示no tracking information

2021-03-22 19:32:41 13

原创 git完全教程:015—Git中的Feature分支

目录为什么要有feture分支实践总结为什么要有feture分支软件开发中,总有无穷无尽的新的功能要不断添加进来。添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。实践现在,你接到了一个新任务于是准备开发$ git checkout -b newTaskM readme.txtSwitched to a new branch 'newTask'后来开发完

2021-03-22 19:22:41 15

原创 git完全教程:014—Git中的bug分支

目录为什么要有bug分支master分支中创建分支修改bug回到dev继续工作在dev中创建分支修改bug总结为什么要有bug分支软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除例如:你现在接到一个修复代号为101的bug任务时,你想创建一个issue-101来进行修复。但是你在dev分支上的任务没有提交并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需

2021-03-22 19:08:06 7

原创 git完全教程:013—Git分支管理策略

目录实战分支策略小结实战通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。下面我们实战一下--no-ff方式的git merge:首先,仍然是创建并切换分支git checkout -b dev修改readme.txt文件并提交一个新的commitgit add readme.txtgit c

2021-03-22 17:08:33 7

原创 git完全教程:012—Git解决分支冲突

目录新建分支修改文件冲突总结合并分支往往不是一帆风顺的我们新建一个分支,开始这次的学习新建分支创建并切换到feature1git checkout -b feature1修改文件修改readme.txt最后一行,添加一句Creating a new branch is quick AND simple.在feature1分支上提交:git add readme.txtgit commit -m "AND simple"切换到master分支git checkout mas

2021-03-22 16:55:27 7

原创 git完全教程:011—Git创建与合并分支

目录为什么要用分支版本回退中的时间线创建与删除分支的时间线实战switch小结为什么要用分支分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既

2021-03-22 14:30:23 13

原创 git完全教程:010—Git从远程仓库克隆

目录创建仓库克隆本地库总结上次我们讲了现有本地库,后有远程库如何关联。这次,假设我们从零出发。那么我们就需要先创建远程库,然后从远程库克隆。创建仓库新建仓库,gitskills勾选Add a README file,这样系统会给我们创建一个README克隆本地库git clone git@github.com:1003774405/gitskills.git注意把Git库的地址换成你自己的,然后进入gitskills目录看看,已经有README.md文件了:如果有多个人协作开发,

2021-03-22 12:17:56 12

原创 git完全教程:009—Git远程仓库的上传与删除

目录在github上创建仓库本地仓库上传SSH警告删除远程库总结现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。在github上创建仓库这时候就创建成功了此时,github告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。本地仓库上传我们根据GitHub的提示,在

2021-03-22 11:20:49 11

原创 git完全教程:008—Git远程仓库的创建

目录搭建远程仓库**第一步**:`创建SSH Key。`第二步:登录githubwindows环境本篇介绍Git的强大功能之一:远程仓库实际工作中,我们会让一台电脑当作服务器,24小时开机。仓库在服务器上,其他人使用直接将这个服务器中的仓库克隆一份到自己的电脑上,并把自己的提交推送到服务器当中,由管理员审核。搭建远程仓库完全可以自己搭建一台运行Git的服务器,不过现阶段,为了学Git先搭个服务器绝对是小题大作。好在这个世界上有个叫GitHub的神奇的网站,从名字就可以看出,这个网站就是提供Git仓

2021-03-22 09:16:25 8

原创 git完全教程:007—Git删除文件

目录添加文件删除文件总结添加文件在删除文件之前得有这个文件,所以我们先添加,顺便复习前面的内容在仓库中添加一个新的文件test.txt并提交vim test.txtgit commit -m "add a test file"git add test.txtgit status删除文件通常删除文件,直接rm <file>即可此时,Git知道了你删除文件,工作区和版本库不一致了,git status会告诉你哪些文件被删除此时你就有两个选择第一种:确实要从版本库中

2021-03-20 22:01:07 23

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除