进度条小程序和git使用详解
文章目录
一、Linux第一个小程序 - 进度条
1.\r && \n
对于 ‘\n’ 想必大家已经很熟悉了,因为在C语言的 printf 函数中我们会频繁的用到它,但是实际上我们C语言学习的 ‘\n’ 是 ‘\r’ + ‘n’;
- \r:回车,即将光标移动到当前行的行首
- \n:换行,即将光标移动到下一行
可以看到,我们C语言中的 ‘\n’ 的作用是 回车 + 换行,而不仅仅是换行,这也是为什么许多台式机的 enter 键是下面这样的:
2.行缓冲
打印效果是先睡眠在打印,我们知道代码执行一定是顺序结构,先执行printf,但是执行完printf后数据没被显示出来,在sleep期间,printf已经执行打印了,但是数据在缓冲区中,这就是为什么会先睡眠后才把数据显示出来。要把数据立即显示出来,我们直接刷新缓冲区fflush(stdout)。
对此,我们可以写一个简易的倒计时的程序:
在输出下一个数之前都让光标先回到本行行首,就能够得到倒计时的效果。
3.进度条
经过上面的铺垫,接下来我们直接来写一个进度条小程序:
因为进度条太过单调,我们可以加上一些修饰,比如改变进度条颜色、改变背景颜色、闪烁特效等等:
二、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.版本控制
版本控制就是一种记录文件内容的变化,方便后面查询阅读之前文件修改情况。
可以记录文件修改历史记录,方便让用户可以看到历史版本,进行切换。
从个人开发到团队开发:如果不借助版本控制,那么李四的开发会覆盖掉张三的开发。
1.3.集中式与分布式的区别
除了git还有svn、cvs这样的版本控制系统,它们的区别在于一个是分布式一个是集中式。集中式就是svn和csv这样的版本控制系统,分布式是git。区别在于集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有的就都丢失了,你本机客户端仅保存当前的版本信息,换句话说,集中式就是把代码放在一个服务器上集中管理,你的所有回滚等操作都需要服务器的支持。分布式的区别在于,每个人的电脑都是服务器,当你从主仓库拉取一份代码下来后,你的电脑就是服务器,无需担心主仓库被删或者找不到的情况,你可以自由在本地回滚,提交,当你想把自己的代码提交到主仓库时,只需要合并推送到主仓库就可以了,同时你可以把自己的代码新建一份仓库分享给其它人。像集中式它们都有一个主版本号,所有的版本迭代都以这个版本号为主,而分布式因为每个客户端都是服务器,git没有固定的版本号,但是有一个由哈希算法算出的id,用来回滚用的,同时也有一个master仓库,这个仓库是一切分支仓库的主仓库,我们可以推送提交到master并合并到主仓库上,主仓库的版本号会迭代一次,我们客户端上的git版本号无论迭代多少次,都跟master无关,只有合并时,master才会迭代一次。
集中式版本控制,例如CVS、VSS都有一个单一的集中管理的服务器,保存所有文件的修改版本,可以通过客户端与服务器连接,来获取最新的代码。
- 优点:每个人都能看到,项目的其他人正在做什么。
- 缺点:如果中央服务器宕机。那么,所有的人都无法提交更新,也无法协同工作。
当A修改完后,提交到服务器,服务器就有A1版本,B可以获取A1版本,进行修改,之后提交到服务器,此时服务器就会多一个B1版本。
分布式版本控制Git工具,客户端提取的不是最新版的文件快照,而是把代码的仓库,完整的镜像到本地库 。这样所有的操作都可以在本地库完整,就算是一起协同工作的文件发生故障,我都可以通过客户端的本地库进行恢复。(每个客户端的每一次文件提取,实际上都是对整个仓库的完整备份)
- 优点:服务器宕机的情况下,也可以进行并发操作。(因为版本控制是在本地进行,相当于每个客户端,同样也是服务器)
- 缺点:每个客户端保存的都是整个完整的项目(包含历史记录)
2.Gitee仓库创建
2.1.新建仓库
2.2.复制仓库链接
2.3.克隆仓库
git clone 复制的网址
2.4.扩展
- 仓库里的.gitignore是什么? .gitignore文件中出现的后缀,都不会被上传至Gitee。
- 仓库里的.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 .
3.2.配置git环境
参数讲解:
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 "提交日志"
3.4.将本地库中的变化文件上传至远程仓库
git push
此时,我们已经把Proncess这个文件上传到远程仓库,我们回去检查是否上传成功。
3.5.查看提交日志
git log
3.6.安装git工具
sudo yum -y install git
3.7.查看暂存区、仓库文件变更状态
git status
这里我们修改的.gitignore并没有被修改,这是因为我们是在Processon这个文件中提交的,并没有影响上级文件.gitignore,所以我们只需要更改路径,在fordebug路径下提交。
3.8.对仓库文件改名\删除
git mv test.txt test.c
git rm -f test.c
对克隆仓库内文件改名使用git mv,删除使用git rm,因为mv和rm只是删除本地文件,本地删了,仓库不知道,又需要重新add了。
3.9.从远端仓库拉取最新版本文件
我们可以从远程仓库修改代码,如上。
这里会出现错误,我们在远端修改代码,这里我们又修改代码,当远端仓库发生更改后,本地提交时会出现冲突现象,需要先把远端仓库最新版本的文件拉取一份到本地。
git pull
3.10.查看提交历史记录
git reflog
版权归原作者 CV攻城狮. 所有, 如有侵权,请联系我们删除。