【Linux】制作进度条小程序、git入门 (add、commit、push三板斧)以及git的其他问题

目录

一、进度条小程序

[二、Git 的核心概念与价值](#二、Git 的核心概念与价值)

[1. 什么是版本控制?](#1. 什么是版本控制?)

[2. 分布式(DVCS)的威力](#2. 分布式(DVCS)的威力)

[🛠️ 三、Git 的三大核心区域](#🛠️ 三、Git 的三大核心区域)

[🚀 四、Git 基本操作实战(三板斧)](#🚀 四、Git 基本操作实战(三板斧))

五、git的其他问题


一、进度条小程序

在有了前面的基础(缓冲区,回车换行)后,我们可以来实现一下进度条的实现

还是三个文件 : processBar.c processBar.h main.c

bash 复制代码
[txf@VM-4-5-centos processbar]$ vim processBar.h
bash 复制代码
  1 #pragma once
  2 
  3 #include<stdio.h>
  4 extern void processbar();
bash 复制代码
[txf@VM-4-5-centos processbar]$ vim processBar.c

测验一下后没有问题,开始编写

bash 复制代码
  processBar.h
  1 #pragma once
  2 
  3 
  4 #include<stdio.h>
  5 #define size 102
  6 #define style '$'
  7 extern void processbar();
bash 复制代码
[txf@VM-4-5-centos processbar]$ vim processBar.c

  1 #include"processBar.h"
  2 #include<string.h>
  3 #include<unistd.h>
  4 void processbar()
  5 {
  6     char bar[size];
  7     memset(bar,'\0',sizeof(bar));
  8     int cnt=0;
  9     while(cnt<=100)
 10     {
 11         printf("%s\r",bar);//没有\n,就没有了立即刷新,因为显示器模式是行刷新
 12         fflush(stdout);
 13         bar[cnt++]=style;
 14         sleep(1);
 15     }
 16 }
  • \n : 代表着回车换行,立即刷新缓冲区里的内容
  • \r : 只回车,等程序结束后,或者缓冲区满了,才刷新缓冲区的内容
  • fflush(stdout) : 强制刷新缓冲区

实现效果:

bash 复制代码
[txf@VM-4-5-centos processbar]$ ./processbar

但感觉是不是太慢了

可以把sleep 换成 unsleep : 秒-> 微秒

1秒=1000000微秒

在加上个[ ],以及填充效果

怎样实现出百分比的效果呢

bash 复制代码
printf("[%-100s][%d%%]\r",bar,cnt);//没有\n,就没有了立即刷新,因为显示器模式是行刷新
  • %% : 才会打印%

实现效果 :

那如果我想加上一个旋转光标,该怎么实现呢

bash 复制代码
#include"processBar.h"
#include<string.h>
#include<unistd.h>

const char* lable="|/-\\";
void processbar()
{
	char bar[size];
	memset(bar,'\0',sizeof(bar));
	int len=strlen(lable);
	int cnt=0;
	while(cnt<=100)
	{
		printf("[%-100s][%d%%][%c]\r",bar,cnt,lable[cnt%len]);//没有\n,就没有了立即刷新,因为显示器模式是行刷新
		fflush(stdout);
		bar[cnt++]=style;
		usleep(1e5);
	}
	printf("\n");
}

实现效果 :

我们可以变一下风格

bash 复制代码
#include"processBar.h"
#include<string.h>
#include<unistd.h>

const char* lable="|/-\\";

void processbar()
{
	char bar[size];
	memset(bar,'\0',sizeof(bar));
	int len=strlen(lable);
	int cnt=0;
	while(cnt<=100)
	{
		printf("[%-100s][%d%%][%c]\r",bar,cnt,lable[cnt%len]);//没有\n,就没有了立即刷新,因为显示器模式是行刷新
		fflush(stdout);
		bar[cnt++]=style;//style 为 '-'了
		if(cnt<100)
		bar[cnt]='>';
		usleep(1e5);
	}
	printf("\n");
}

Git 本质上是一个分布式版本控制系统,你可以把它想象成一个超级精密的"时光机"和"团队协作神器"。它能帮你记录代码的每一次改动,随时回退到历史版本,并高效地与他人协同开发,而每个人的电脑上都有一份完整的项目"全息档案"(即完整的仓库和历史记录)。接下来,我将带你从基础概念到实战操作,一步步掌握这个开发者必备的利器。

二、Git 的核心概念与价值

1. 什么是版本控制?

版本控制可以理解为一个"智能备份系统"。它会记录你对项目文件(代码、文档等)的所有修改历史,允许你:

  • 回溯历史:随时查看或恢复到任何一个过去的版本(比如昨天的代码,或者上周的报告)。
  • 协同工作:多个人可以同时修改同一个项目,Git 能智能地帮你们合并修改,而不是互相覆盖。
  • 隔离实验:你可以创建一个独立的"分支"来尝试新功能,如果失败了,直接丢弃即可,完全不影响主项目(主分支)。

💡 举个例子:就像你写论文,从 v1.0.doc 到 v1.0_final.doc,再到 v1.0_final_really.doc... Git 帮你自动管理这些版本,让你随时能找到"上周二下午三点那个能跑的版本"。

(ps: git : 版本控制器

什么叫版本控制,就是把你写的代码版本的v1 ,v2 ,v3 ;在你的电脑的一个磁盘中创建一个目录来保存这些不同版本的代码,git就负责这件事,这个目录叫做本地仓库,把本地仓库代码放到云服务器上的目录中存着,这个云服务器上的目录叫做远端仓库

git是具有网络功能的版本控制器,开源,客户端和服务端是一体的)

2. 分布式(DVCS)的威力

Git 是"分布式"的,这意味着:

  • 人人都是主角:每个人的电脑上都有一个完整的代码仓库,包含全部的历史记录。
  • 离线也能工作:你可以在没有网络的情况下提交(commit)代码、查看历史、创建分支。
  • 安全可靠:因为每个人的电脑都是一个完整的备份,即使中央服务器宕机,代码也不会丢失。

🛠️ 三、Git 的三大核心区域

理解 Git 的工作流程,关键在于明白它有三个工作区域:

  1. 工作区(Working Directory)
    你当前正在编辑的文件所在的目录,就是你的工作区。这里是你写代码、改文档的地方。
  2. 暂存区(Staging Area / Index)
    这是一个"待办事项清单"。当你用 git add 命令后,你告诉 Git:"我准备把这部分修改纳入到下一次的提交中"。它让你可以精确控制哪些修改需要被提交。
  3. 本地仓库(Local Repository)
    当你执行 git commit 后,暂存区里的修改就会被永久地保存到你的本地仓库中,成为一个新的"版本快照"。

📌 简单流程 :修改文件(工作区) → git add(暂存区) → git commit(本地仓库)


🚀 四、Git 基本操作实战(三板斧)

假设你已经安装好了 Git(通常 sudo apt install gitsudo yum install git 即可),我们来走一遍最常用的流程

git如何使用?

首先下载git

bash 复制代码
[txf@VM-4-5-centos ~]$ sudo yum install git

然后到gitee 中复制新创建的仓库地址

这里可以看到在gitee中创建的仓库 : linux

bash 复制代码
[txf@VM-4-5-centos ~]$ cd linux

当我们想上传我们的代码时,怎么办

拷贝文件到当前目录 .

但是当前这个代码并没有被仓库管理起来,怎样添加到本地仓库

bash 复制代码
[txf@VM-4-5-centos linux]$ git add .
[txf@VM-4-5-centos linux]$ git commit -m "完成最简单版本的进度条"

再推送到远端仓库

bash 复制代码
[txf@VM-4-5-centos linux]$ git push
  • 注意 add 是添加新增的部分到文件中,原始文件做了修改,都是要add的
  • add是托管到本地仓库,push是推送到远端仓库

五、git的其他问题

查看git的提交记录

bash 复制代码
[txf@VM-4-5-centos linux]$ git log

查看git的提交状态 : git status

我们再来看gitigore

.gitignore 文件

这个文件用来告诉 Git 哪些文件不要纳入版本控制,比如编译生成的临时文件、日志、IDE 配置等。

在项目根目录创建 .gitignore 文件:

如果有文件的后缀在这里面的,那么这个文件不会被添加到仓库中(注意通配符*不要忽略了)

小提示 : 首次使用git的提交需要配置

相关推荐
Crazy________2 小时前
45Ansible Roles:标准化部署的终极利器
linux·运维·服务器
翼龙云_cloud2 小时前
腾讯云渠道商:腾讯云轻量服务器和CVM有什么差异?
运维·服务器·云计算·php·腾讯云
wanhengidc2 小时前
服务器受到病毒攻击该怎么办
运维·服务器·科技·云计算
知识分享小能手2 小时前
CentOS Stream 9入门学习教程,从入门到精通,CentOS Stream 9 磁盘存储管理 —语法详解与实战案例(7)
linux·学习·centos
wadesir2 小时前
Linux网络优化服务配置(从零开始提升服务器网络性能)
linux·服务器·网络
tianyuanwo2 小时前
从PAM到零信任:Linux密码认证体系的深度解析与演进
linux·运维·服务器·pam·密码认证
unclecss2 小时前
键盘输入延迟 800 ms?!——一次终端“假死”排查笔记
linux·运维·笔记·性能优化·auditd
シ風箏2 小时前
Shell【脚本 06】监测文件数据量并压缩及查看远程服务器状态并删除文件脚本分享
linux·运维·服务器·github·shell
一个平凡而乐于分享的小比特2 小时前
Linux、Debian、Yocto、Buildroot、Android系统详解
android·linux·操作系统·debian·yocto·buildroot