Linux系统篇,开发工具(五):git的基本使用和浅层认识

系列文章目录

第三章 开发工具的认识与使用


文章目录

  • 系列文章目录
  • 前言
  • 一、版本控制
    • [1.1 版本控制与版本控制器](#1.1 版本控制与版本控制器)
    • [1.2 理解版本控制器](#1.2 理解版本控制器)
  • 二、Git的认识与搭建
    • [1.1 Git是什么](#1.1 Git是什么)
    • [2.1 环境搭建](#2.1 环境搭建)
      • [2.1.1 前提配置](#2.1.1 前提配置)
        • [2.1.1.1 gitee 注册](#2.1.1.1 gitee 注册)
        • [2.1.1.2 新建仓库](#2.1.1.2 新建仓库)
        • [2.1.1.3 连接仓库](#2.1.1.3 连接仓库)
      • [2.1.2 git 安装 与 配置](#2.1.2 git 安装 与 配置)
  • [三、Git 原理与使用](#三、Git 原理与使用)
    • [3.1 Git 操作对象](#3.1 Git 操作对象)
    • [3.2 Git 的深度理解](#3.2 Git 的深度理解)
      • [3.2.1 Git 真正仓库:.git](#3.2.1 Git 真正仓库:.git)
      • [3.2.2 Git 更新规则](#3.2.2 Git 更新规则)
      • [3.2.3 Git 管理文件的本质 及 过滤文件](#3.2.3 Git 管理文件的本质 及 过滤文件)
      • [3.2.4 git 冲突](#3.2.4 git 冲突)
  • 四、远程仓库与协作
    • [4.1 远程仓库形式](#4.1 远程仓库形式)
      • [4.1 SVN vs Git](#4.1 SVN vs Git)
    • [4.2 协作](#4.2 协作)
      • [4.2.1 SVN 协作模式](#4.2.1 SVN 协作模式)
      • [4.2.2 Git 协作模式](#4.2.2 Git 协作模式)
      • [4.2.3 两种远程连接方式](#4.2.3 两种远程连接方式)
  • 总结

前言

本节我们来学习git的使用,git作为一款我们在学习C过程中常常使用的工具我们以及再熟悉不过,今天我们就学习在Linux中的git的使用吧。


一、版本控制

1.1 版本控制与版本控制器

版本控制就是给文件 / 代码做 "时光机 + 存档",记录每一次修改,随时回溯、对比、多人一起改不冲突。而版本控制器就是帮助我们实现版本控制的工具

1.2 理解版本控制器

我们用例子来理解这个东西:

张三作为一名学生,在完成它的计算机实验报告并提交后,老师检查打回让重新检查,张三修改后再次提交,老师收到后发现错误更多了,就让张三提交第一次的作业,但是第二次作业是张三第一次作业修改而来,找不回第一次的作业了。

李四也是该班的一员,但他在完成第一次作业时备份即创建了个副本,也遇到了张三的问题,但他就能成功地提交第一次的作业。

在以上的例子中,李四的工作就是版本控制的体现而且现实中: 张三、李四就是程序员,老师是产品经理。版本控制的存在满足了产品版本多次更迭的要求。

二、Git的认识与搭建

1.1 Git是什么

Git是一款版本控制器,能够记录并管理文件的版本历史,一般常用于团队开发,实现共同的文件共享和查改。

Git 是一款免费、开源的分布式版本控制系统,旨在高速、高效地处理从小型到超大型规模的各类项目。

Git作为版本控制器,还具有以下的特点:

  • 分布式: 每个人本地都有完整仓库,不用依赖中央服务器,可离线提交、回滚、分支操作。
  • 速度快、高效: 提交、分支、合并、切换版本极快,大项目也不卡顿。
  • 免费开源、跨平台: 支持 Windows / Mac / Linux,完全免费,协议开源。
  • 强大的分支管理: 可轻松创建、切换、合并分支,适合并行开发、多版本迭代。

2.1 环境搭建

2.1.1 前提配置

2.1.1.1 gitee 注册

gitee网站是基于Git的代码托管平台,因此我们想使用Git必须通过该账号使用(当然也可以使用GitHub),gitee作为中国的网站,我们可以直接通过手机号注册,这里不再多说。

2.1.1.2 新建仓库

打开我的,找到仓库,然后使用新建仓库的选项:

接着就进入到配置界面,实现对仓库的初步设置:

  • 仓库名称/仓库介绍: 两者见名知意,不做解释
  • 开源/私有: 开源别人就可以通过查找看到你的仓库,后者不能
  • 初始化仓库: 对仓库的使用实现语言配置
  • 设置模板: 就是对仓库项目的描述设置
  • 选择分支模型: 个人使用单分支,是项目的关系。

打开仓库后,获取我们仓库的地址。

2.1.1.3 连接仓库

直接使用在命令行上使用命令:git clone 仓库地址,将远端仓库拉取到本地

2.1.2 git 安装 与 配置

我们直接在命令上输入安装指令即可:

bash 复制代码
# 以centos版本操作示例
yum install git 
# 测试是否安装成功
git --version

配置用户名、邮箱(提交时显示是谁改的),这是首次使用必须配置的。

bash 复制代码
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

--global: 全局配置,所有 Git 项目共用;不加只对当前项目生效
git config --list:配置的查看


三、Git 原理与使用

3.1 Git 操作对象

Git一般操作以下四个区域,以实现文件的版本管理:

  • 工作区: 你当前写代码的文件夹(Linux 目录)
  • 暂存区 (stage): 临时存放准备提交的文件
  • 本地仓库: .git 隐藏文件夹,存所有版本历史
  • 远程仓库: Gitee/GitHub 上的仓库

实现一次完整的文件提交流程为:工作区 → git add → 暂存区 → git commit → 本地仓库 → git push → 远程仓库

  1. 工作区 → 暂存区(git add)
      在 Linux 里修改 / 新建文件后,文件在工作区,通过以下操作将文件转移到暂存区:
bash 复制代码
git add 文件名
# 或
git add .

通过git status 查看add后的文件状态

  1. 暂存区 → 本地仓库(git commit)
bash 复制代码
git commit -m "提交说明"

把暂存区所有内容,生成一个版本快照,存入 .git 本地仓库。此时已经保存版本,就算删了工作区文件也能恢复。

  1. 本地仓库 → 远程仓库(git push)
bash 复制代码
git push origin master

把本地仓库最新版本,推送到 Gitee/GitHub 远程仓库,此时会让用户输入gitee的账户名和对应的密码。

现在高版本,不能直接使用密码登录;现在必须使用安全密令充当密码,从安全设置的私人令牌中获取

3.2 Git 的深度理解

3.2.1 Git 真正仓库:.git

将远端仓库拉到本地后,我们可以看到形成的目录中的所有文件,其中.git仓库是真正的仓库,是本库的核心

  • 内容: .git存储的是历史上对仓库的所有修改记录和版本历史
  • 特点: 默认隐藏,不能被用户随意修改访问

3.2.2 Git 更新规则

git提交时,只会提交变化的操作,本质是只记录变化部分,但存储方式是完整快照 + 增量差异。

  • 规则: 提交的是文件中里修改 / 新增 / 删除的那部分内容,记录在.git当中

如:我们有1000行的代码文件,我们修改了第五行的代码

那么提交的就是修改 + 内容,当我们想要回归时就把修改对应的操作反向操作

  • 特点: 减少文件的重复,实现空间资源的节约

3.2.3 Git 管理文件的本质 及 过滤文件

Git 在管理项目文件时,其核心操作对象是源代码文件 (如 .c.h 文件)以及项目描述文件 (如 Makefile.gitignore)。对于编译生成的中间文件(如 .o 目标文件、可执行文件)或系统自动生成的配置文件,通常不应纳入版本控制。

Git 管理的基本原则:

  1. 跟踪源文件,忽略生成文件:只将需要人工编写和维护的源文件加入版本库,编译产物由构建系统实时生成。
  2. 使用 .gitignore 文件 :在项目根目录创建 .gitignore 文件,列出需要 Git 忽略的文件和目录模式,避免误提交。
  3. 提交有意义的变更:每次提交应对应一个完整的逻辑修改,并附上清晰的提交说明。

示例 .gitignore 内容(C 语言项目常见):

复制代码
# 编译生成的文件
*.o
*.out
*.exe
*.so
*.a

# 编辑器临时文件
*~
*.swp
*.swo

# 构建目录
build/
dist/

通过遵循这些原则,Git 仓库将保持清晰、精简,只包含真正需要版本控制的必要文件,从而提高协作效率和仓库的可维护性。

3.2.4 git 冲突

当一个仓库中有多人协作时,只要有个人提交文件到远端仓库,我们就必须先同步远端仓库,这样保障了工程的唯一性。

可以说,远端仓库永远是最新的版本,冲突是提醒仓库同步的关键。


四、远程仓库与协作

4.1 远程仓库形式

4.1 SVN vs Git

SVNGit是常用的两个远程仓库,但是两者有着根本性的差异:是否为中心化。首先我们要理解什么是中心化?中心化通俗来说是只能依靠某一特定的对象充当服务的核心,服务的实现不能离开这个中心。

  • SVN(中心化): 采用集中式版本控制架构,存在唯一的中央服务器存储项目全部代码与版本历史;开发者本地仅持有当前工作文件,所有提交、更新、版本查询等操作必须联网与服务器交互,依赖单一中心节点,断网无法完成版本操作。

  • Git(去中心化): 采用分布式版本控制架构,无唯一中心服务器;每个开发者本地都拥有完整的项目仓库副本(包含全部代码、历史版本、分支),可离线完成提交、分支、回滚等操作,远程仓库仅作为协作同步节点,各节点地位对等,实现去中心化协作。

4.2 协作

协作即多人共同维护、开发同一个项目,通过版本控制工具同步代码、合并修改、解决冲突,保障开发流程有序推进。项目开发时,开发者先将远程仓库代码克隆到本地,在本地完成编写、测试、版本提交,联网后将本地代码推送至远程仓库;多人之间通过拉取最新代码、合并分支完成代码同步。

4.2.1 SVN 协作模式

以中央服务器为唯一核心,开发者直接向服务器提交代码;所有修改集中在服务器合并,冲突在线上处理;分支功能薄弱,适合小规模团队线性开发;提交即直接修改中心仓库,风险较高。

4.2.2 Git 协作模式

采用本地开发→远程同步的模式,先在本地完成提交、分支开发,再推送至远程;支持多分支并行开发,冲突优先在本地解决;可通过 Pull Request(PR)实现代码评审,适配大型团队、开源项目的多人协作;远程仓库不直接修改主分支,安全性更高。

4.2.3 两种远程连接方式

HTTPS:简单,每次推送需输入账号密码 / 令牌

SSH:免密登录,Linux/Gitee 推荐使用


总结

本节对git讲解就到这里了,这只是对git的初步使用的讲解,如果有需求的可以继续查询这方面的有关知识,感谢您的阅读,我们下节再见。

相关推荐
Harm灬小海8 小时前
【云计算学习之路】学习Centos7系统-ROOT密码重置方法
linux·运维·服务器·学习·云计算
IT瑞先生8 小时前
企业云服务器选型分析
运维·服务器
weixin_453639598 小时前
Docker Redis 本地能 Ping 通但 6379 端口连不上?排查记录与解决
linux·redis
志栋智能8 小时前
超自动化巡检:保障数字化转型的“底座工程”
运维·自动化
Python-AI Xenon8 小时前
Linux逻辑卷(LVM)初始化与文件系统选型全指南
linux·运维·性能测试·存储
z202305088 小时前
RDMA之RoCEv2 无损网络PFC 、DCQCN 和ECN (7)
linux·服务器·网络·人工智能·ai
dadaobusi8 小时前
MRIF说明
linux
不吃土豆的马铃薯8 小时前
Spdlog 入门:日志记录器与日志槽基础详解
服务器·开发语言·c++·c·日志·spdlog
汪汪大队u8 小时前
基于 K8s 的物联网平台运维体系:Ansible+Zabbix 自动化监控与故障自愈(三)—— Zabbix Server 启动排错记
运维·kubernetes·ansible