<Linux>进度条小程序和git使用详解

news2024/12/24 2:24:41

进度条小程序和git使用详解

在这里插入图片描述

文章目录

  • 进度条小程序和git使用详解
  • 一、Linux第一个小程序 - 进度条
    • 1.\r && \n
    • 2.行缓冲
    • 3.进度条
  • 二、git使用详解
    • 1.git概述
      • 1.1.历史背景
      • 1.2.版本控制
      • 1.3.集中式与分布式的区别
    • 2.Gitee仓库创建
      • 2.1.新建仓库
      • 2.2.复制仓库链接
      • 2.3.克隆仓库
      • 2.4.扩展
    • 3.git常见命令
      • 3.1. 将改动文件添加到暂存区
      • 3.2.配置git环境
      • 3.3. 将暂存区文件提交到本地库
      • 3.4.将本地库中的变化文件上传至远程仓库
      • 3.5.查看提交日志
      • 3.6.安装git工具
      • 3.7.查看暂存区、仓库文件变更状态
      • 3.8.对仓库文件改名\删除
      • 3.9.从远端仓库拉取最新版本文件
      • 3.10.查看提交历史记录

一、Linux第一个小程序 - 进度条

1.\r && \n

对于 ‘\n’ 想必大家已经很熟悉了,因为在C语言的 printf 函数中我们会频繁的用到它,但是实际上我们C语言学习的 ‘\n’ 是 ‘\r’ + ‘n’

  • \r:回车,即将光标移动到当前行的行首

  • \n:换行,即将光标移动到下一行

可以看到,我们C语言中的 ‘\n’ 的作用是 回车 + 换行,而不仅仅是换行,这也是为什么许多台式机的 enter 键是下面这样的:

image-20230114004514233

2.行缓冲

image-20230114010617870

打印效果是先睡眠在打印,我们知道代码执行一定是顺序结构,先执行printf,但是执行完printf后数据没被显示出来,在sleep期间,printf已经执行打印了,但是数据在缓冲区中,这就是为什么会先睡眠后才把数据显示出来。要把数据立即显示出来,我们直接刷新缓冲区fflush(stdout)。

对此,我们可以写一个简易的倒计时的程序:

image-20230114011411238

在输出下一个数之前都让光标先回到本行行首,就能够得到倒计时的效果。

动画

3.进度条

经过上面的铺垫,接下来我们直接来写一个进度条小程序:

image-20230114141357295

image-20230114141502303

因为进度条太过单调,我们可以加上一些修饰,比如改变进度条颜色、改变背景颜色、闪烁特效等等:

image-20230114141514231

动画2

二、git使用详解

1.git概述

Git是一个一个开源的分布式版本控制系统,可以快速高速地处理从大型到小型的各种项目。它是Linus Torvalds为了帮助管理Linux内核代码而开发的一个版本控制系统软件。

1.1.历史背景

Git最初是由Linux开发者Linus用了仅仅两周时间纯C语言编写而成,在编写完成之后就立马上手接管Linux源代码,不过在此之前Linux是由BitMover公司开发的BitKeeper分布式版本控制系统所管理源代码,它是商业收费的分布式版本控制器,但BitMover公司看中Linux开源精神,免费授权给Linux社区使用,在2002年时,Linux开始使用BitKeeper分布式版本控制系统管理源代码,但好景不长,有一天Linux社区成员Andrew(samba(局域网共享文件c/s程序)的作者)试图破解BitKeeper共享给所有人使用,被BitMover公司发现并收回了免费使用的版权,随后Linus就用了两周时间开发出了git(两周时间包括测试),也就是目前为止最好用的分布式版本控制系统。大名鼎鼎的github用的就是git系统来管理它们的网站,这里需要区分一下,github和git是两个东西,github是一个社区,git是一个服务系统,github只支持git分布式系统,所以故名成为github。

1.2.版本控制

版本控制就是一种记录文件内容的变化,方便后面查询阅读之前文件修改情况。
可以记录文件修改历史记录,方便让用户可以看到历史版本,进行切换。
image-20230114151516442

从个人开发到团队开发:如果不借助版本控制,那么李四的开发会覆盖掉张三的开发。

image-20230114152200687

1.3.集中式与分布式的区别

除了git还有svn、cvs这样的版本控制系统,它们的区别在于一个是分布式一个是集中式。集中式就是svn和csv这样的版本控制系统,分布式是git。区别在于集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有的就都丢失了,你本机客户端仅保存当前的版本信息,换句话说,集中式就是把代码放在一个服务器上集中管理,你的所有回滚等操作都需要服务器的支持。分布式的区别在于,每个人的电脑都是服务器,当你从主仓库拉取一份代码下来后,你的电脑就是服务器,无需担心主仓库被删或者找不到的情况,你可以自由在本地回滚,提交,当你想把自己的代码提交到主仓库时,只需要合并推送到主仓库就可以了,同时你可以把自己的代码新建一份仓库分享给其它人。像集中式它们都有一个主版本号,所有的版本迭代都以这个版本号为主,而分布式因为每个客户端都是服务器,git没有固定的版本号,但是有一个由哈希算法算出的id,用来回滚用的,同时也有一个master仓库,这个仓库是一切分支仓库的主仓库,我们可以推送提交到master并合并到主仓库上,主仓库的版本号会迭代一次,我们客户端上的git版本号无论迭代多少次,都跟master无关,只有合并时,master才会迭代一次。

集中式版本控制,例如CVS、VSS都有一个单一的集中管理的服务器,保存所有文件的修改版本,可以通过客户端与服务器连接,来获取最新的代码。

  • 优点:每个人都能看到,项目的其他人正在做什么。

  • 缺点:如果中央服务器宕机。那么,所有的人都无法提交更新,也无法协同工作。

    image-20230114152942689

当A修改完后,提交到服务器,服务器就有A1版本,B可以获取A1版本,进行修改,之后提交到服务器,此时服务器就会多一个B1版本。


分布式版本控制Git工具,客户端提取的不是最新版的文件快照,而是把代码的仓库,完整的镜像到本地库 。这样所有的操作都可以在本地库完整,就算是一起协同工作的文件发生故障,我都可以通过客户端的本地库进行恢复。(每个客户端的每一次文件提取,实际上都是对整个仓库的完整备份)

  • 优点:服务器宕机的情况下,也可以进行并发操作。(因为版本控制是在本地进行,相当于每个客户端,同样也是服务器
  • 缺点:每个客户端保存的都是整个完整的项目(包含历史记录)

image-20230114153842278

2.Gitee仓库创建

2.1.新建仓库

image-20230114160956306

2.2.复制仓库链接

image-20230114171517299

2.3.克隆仓库

git clone 复制的网址

image-20230114210232832

2.4.扩展

  1. 仓库里的.gitignore是什么?
    .gitignore文件中出现的后缀,都不会被上传至Gitee。

  2. 仓库里的.git是什么?
    这个.git就是我们所说的仓库,本质就是一个目录,里面存放着本地仓库的内容。push到远端仓库本质上就是将.git仓库里的内容同步到Gitee上去。(Gitee上也有.git类似的目录,看不到罢了)

3.git常见命令

命令名称作用
git config --global user.name 用户名设置用户签名(为了区分是谁提交的代码)
git config --global user.email 邮箱设置用户邮箱(可以是虚拟的邮箱)
sudo yum -y install git安装git工具
git status查看本地库状态
git clone克隆仓库网址
git add 文件名将改动文件添加到暂存区
git commit - m “我做了什么修改”将暂存区文件提交到本地库(git仓库)
git push将本地库中的变化文件上传至远程仓库
git log查看历史提交日志
git rm删除文件
git mv修改文件
git pull从远端仓库拉取最新版本文件
git reset --hard 版本号版本穿梭
git reflog查看提交历史记录
git init初始化本地库

3.1. 将改动文件添加到暂存区

git add .

image-20230114214446787

3.2.配置git环境

image-20230114214741164

参数讲解:

config:参数是用来配置git环境的

–global:长命令表示配置整个git环境

初次使用git需要设置你的用户名以及邮箱,这将作为当前机器git的标识,如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录,git默认使用配置邮箱以及用户名登入,但会要求你手动输入密码。

用户名配置:

user代表用户,.name代表配置用户的名称

git config --global user.name "你的用户名"

邮箱配置:

user代表用户,.email代表配置用户的邮箱

git config --global user.email "你的邮箱"

不配置也行,当遇到要求登录权限的远程仓库会让你在手动输入用户名、邮箱、以及密码。

3.3. 将暂存区文件提交到本地库

git commit -m "提交日志"

image-20230114220023467

3.4.将本地库中的变化文件上传至远程仓库

git push 

image-20230114220204228

此时,我们已经把Proncess这个文件上传到远程仓库,我们回去检查是否上传成功。

image-20230114220516093

3.5.查看提交日志

git log

image-20230114221314347

3.6.安装git工具

sudo yum -y install git

image-20230114221502496

3.7.查看暂存区、仓库文件变更状态

git status

image-20230114223901708

这里我们修改的.gitignore并没有被修改,这是因为我们是在Processon这个文件中提交的,并没有影响上级文件.gitignore,所以我们只需要更改路径,在fordebug路径下提交。

image-20230114231118900

image-20230114231338677

3.8.对仓库文件改名\删除

git mv test.txt test.c
git rm -f test.c

image-20230114231608086

对克隆仓库内文件改名使用git mv,删除使用git rm,因为mv和rm只是删除本地文件,本地删了,仓库不知道,又需要重新add了。

3.9.从远端仓库拉取最新版本文件

image-20230114232256815

我们可以从远程仓库修改代码,如上。

image-20230114232228880

这里会出现错误,我们在远端修改代码,这里我们又修改代码,当远端仓库发生更改后,本地提交时会出现冲突现象,需要先把远端仓库最新版本的文件拉取一份到本地。

git pull

image-20230114232956469

3.10.查看提交历史记录

git reflog

image-20230114233127243

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis基础命令操作四之集合类型HASH

HASH命令 命令举例说明HSETHSET [OUTKEY] [INKEY][INVALUE]集合添加键值对[INKEY][INVALUE]HGETHGET [OUTKEY] [INKEY]获取集合中inkey对应的valueHGETALLHGETALL [OUTKEY]获取集合中所有key,value信息HDELHDEL [OUTKEY] [INKEY]从集合中删除inkey键值对HLENHLEN [OUTKEY]获…

linux部署KubeSphere和k8s集群(二)

上一篇文章讲述了在单个节点上安装 KubeSphere和k8s,这节主要讲解k8s多节点集群部署 第一步:设置主机名称hostname--(3台机器都设置) hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-node1 hostnamectl set-hostname k8s-node2 第二…

_Linux多线程--生产者消费者模型篇

文章目录1. 为何要使用生产者消费者模型2. 基于BlockingQueue的生产者消费者模型3. C queue模拟阻塞队列的生产消费模型条件变量使用规范简单测试1. BlockQueue (缓存--超市)2. ConProd.cc3. 结果展示升级版测试&&设计与RAII风格的加锁方式1. BlockQueue.hpp2. Task.hp…

MATLAB 实现路由算法详细教程(完整代码+数据)

问题描述:鉴于我们小组成员都来自计通学院,我们对专业知识计算机网络内的路由器进行研究。我们知道在整个互联网中,有着很多个小的无法互相连通的小网络,早在上世纪六十年代,针对不同网络无法互联的问题,路…

IC芯片类元件创建

--摘自凡亿教育 一、VS1003音频芯片 首先,先创建新的元器件库 按箭头所指的即可。 然后,我们右击箭头所指的键,选择第六个矩形。 然后,依次放置管脚 点击箭头所指,既可放置管脚。 由于我们放置管脚的时候&#xff…

python的webdriver应用

本文总结如何使用python的webdriver插件,应用自动化测试以及爬虫抓取数据。工具选择谷歌版本下载:https://www.iplaysoft.com/tools/chrome/webdriver版本:http://npm.taobao.org/mirrors/chromedriver/ 或https://chromedriver.storage.goog…

顺序表学习指南,请查收~

作者:爱塔居的博客_CSDN博客-JavaSE,数据结构领域博主 专栏:数据结构 作者简介:大三学生,希望一起进步! 文章目录 目录 文章目录 一、顺序表基本概念 二、练习 一、顺序表基本概念 🌺顺序表是用一段物理地…

常用工具的常用操作

写在前面 记录可能用到的各种工具常见技巧。 1:sublime 1.1:操作多列 首先选中要操作的列所在的行: 然后点击selection,spit lines: 接下来移动左右键就可以操作了,删除或者批量添加内容: 1…

创客匠人助力机构招生获客转化

后疫情时代,各行各业部署线上化成为一门必修课。 创客匠人作为一家专注教育培训行业的知识付费技术服务商,为了更好的帮助教培机构、教育企业立足于内容传播需求,打通线上线下资源通道,将线下资源向"线上核心平台"靠拢…

无极低码:100套大屏可视化源码,包含多个行业

随着互联网的发展,各项技术的不断成熟,数据可视化在新的时代,人们对数据的呈现方式开始有了新的要求。科技感、美观、直观、动感等等都成为现代软件系统新的设计和思考方向,特别是硬件的发展和数据的发展,数据分析的需…

Vue3商店后台管理系统设计文稿篇(一)

记录使用vscode构建Vue3商店后台管理系统,这是第一篇,主要记录Vue3项目创建过程,以及数据的挂载 文章目录一、Vue3项目创建二、取消代码规范检查三、数据简单挂载正文内容: 一、Vue3项目创建 使用如下命令全局安装yarn npm i -g …

Java开发 - Mybatis框架初体验

前言 在前文中,我们已经学习了Spring框架,Spring MVC框架,相信大家对这些基础的内容已经熟练使用了,今天,我们继续来学习Mybatis框架。就目前而言,Mybatis框架依然是比较实用的框架,这篇博客&a…

SpringMVC知识点记录

SpringMVC知识点记录1. SpringMVC简介2. 入门案例3. RequestMapping注解4. SpringMVC获取请求参数5. 域对象共享数据6.SpringMVC的视图7. RESTful8. RESTful 案例9. SpringMVC处理ajax请求10. 文件上传和下载11. 拦截器12. 异常处理器13. 注解配置SpringMVC14. SpringMVC执行流…

hgame2023 week1 writeup

#WEEK1 RE 1、re-test_your_IDA ida打开可见flag: int __cdecl main(int argc, const char **argv, const char **envp) {char Str1[24]; // [rsp20h] [rbp-18h] BYREFsub_140001064("%10s");if ( !strcmp(Str1, "r3ver5e") )sub_140001010…

移动端 - 搜索组件(search-input篇)

我们先来看一下最终效果 这样的搜索组件在移动端是很常见的, 大部分需求都是: 1. 搜索框进行搜索关键字 2. 热门搜索 3. 搜索历史 4. 搜索结果(提供上拉加载效果) 上述的基本需求也是我们现在需要去实现的, 先来说一下大致的方向: 1. search 一般都是一个路由组件, 所以先…

20.Isaac教程--Python接口(Python API)

Isaac Python接口(Python API) ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 虽然 Isaac SDK 的大部分部分都是用 C 编码的,但您可以选择使用 Python 构建您的应用程序。 本文档介绍了 Isaac SDK 的 Python API。 Python API 允许您…

Day859.高性能队列Disruptor -Java 并发编程实战

高性能队列Disruptor Hi,我是阿昌,今天学习记录的是关于高性能队列Disruptor的内容。 并发容器 中Java SDK 提供了 2 个有界队列: ArrayBlockingQueueLinkedBlockingQueue 它们都是基于 ReentrantLock 实现的,在高并发场景下&…

人工智能的过去与未来——萌芽

1943年—M-P模型 美国神经生理学家Warren McCulloch和数理逻辑学家Walter Pitts在合作的《A logical calculus of the ideas immanent in nervous activity》论文中对生物神经元进行建模,并提出了一种形式神经元模型,命名为McCulloch-Pitts模型。 生物…

65. Python __init__方法

65. __init__方法 文章目录65. __init__方法1. 知识回顾在类的方法中调用类的属性2. 知识回顾调用方法时传值3.体验__init__方法4. __init__的作用5. __init__方法的写法6. __init__方法调用类的属性7. 课堂实操1. 知识回顾在类的方法中调用类的属性 【目标任务】 创建一个类…

C++程序设计——类的六个成员函数

类的六个成员函数 空类中真的什么都没有吗? 事实上任何一个类,在我们不写的情况下,都会自动生成6个默认的成员函数。 1.构造函数 概念: 构造函数是一个特殊的成员函数,名字与类名相同,实例化对象时由编译器…