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

Linux系统篇,开发工具(五):git的基本使用和浅层认识 系列文章目录第三章 开发工具的认识与使用文章目录系列文章目录前言一、版本控制1.1 版本控制与版本控制器1.2 理解版本控制器二、Git的认识与搭建1.1 Git是什么2.1 环境搭建2.1.1 前提配置2.1.1.1 gitee 注册2.1.1.2 新建仓库2.1.1.3 连接仓库2.1.2 git 安装 与 配置三、Git 原理与使用3.1 Git 操作对象3.2 Git 的深度理解3.2.1 Git 真正仓库.git3.2.2 Git 更新规则3.2.3 Git 管理文件的本质 及 过滤文件3.2.4 git 冲突四、远程仓库与协作4.1 远程仓库形式4.1 SVN vs Git4.2 协作4.2.1 SVN 协作模式4.2.2 Git 协作模式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必须通过该账号使用当然也可以使用GitHubgitee作为中国的网站我们可以直接通过手机号注册这里不再多说。2.1.1.2 新建仓库打开我的找到仓库然后使用新建仓库的选项接着就进入到配置界面实现对仓库的初步设置仓库名称/仓库介绍两者见名知意不做解释开源/私有开源别人就可以通过查找看到你的仓库后者不能初始化仓库对仓库的使用实现语言配置设置模板就是对仓库项目的描述设置选择分支模型个人使用单分支是项目的关系。打开仓库后获取我们仓库的地址。2.1.1.3 连接仓库直接使用在命令行上使用命令git clone 仓库地址将远端仓库拉取到本地2.1.2 git 安装 与 配置我们直接在命令上输入安装指令即可# 以centos版本操作示例yuminstallgit# 测试是否安装成功git--version配置用户名、邮箱提交时显示是谁改的这是首次使用必须配置的。gitconfig--globaluser.name你的名字gitconfig--globaluser.email你的邮箱--global 全局配置所有 Git 项目共用不加只对当前项目生效git config --list配置的查看三、Git 原理与使用3.1 Git 操作对象Git一般操作以下四个区域以实现文件的版本管理工作区你当前写代码的文件夹Linux 目录暂存区 (stage)临时存放准备提交的文件本地仓库.git隐藏文件夹存所有版本历史远程仓库Gitee/GitHub 上的仓库实现一次完整的文件提交流程为工作区 → git add → 暂存区 → git commit → 本地仓库 → git push → 远程仓库工作区 → 暂存区git add在 Linux 里修改 / 新建文件后文件在工作区通过以下操作将文件转移到暂存区gitadd文件名# 或gitadd.通过git status查看add后的文件状态暂存区 → 本地仓库git commitgitcommit-m提交说明把暂存区所有内容生成一个版本快照存入 .git 本地仓库。此时已经保存版本就算删了工作区文件也能恢复。本地仓库 → 远程仓库git pushgitpush 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 管理的基本原则跟踪源文件忽略生成文件只将需要人工编写和维护的源文件加入版本库编译产物由构建系统实时生成。使用.gitignore文件在项目根目录创建.gitignore文件列出需要 Git 忽略的文件和目录模式避免误提交。提交有意义的变更每次提交应对应一个完整的逻辑修改并附上清晰的提交说明。示例.gitignore内容C 语言项目常见# 编译生成的文件 *.o *.out *.exe *.so *.a # 编辑器临时文件 *~ *.swp *.swo # 构建目录 build/ dist/通过遵循这些原则Git 仓库将保持清晰、精简只包含真正需要版本控制的必要文件从而提高协作效率和仓库的可维护性。3.2.4 git 冲突当一个仓库中有多人协作时只要有个人提交文件到远端仓库我们就必须先同步远端仓库这样保障了工程的唯一性。可以说远端仓库永远是最新的版本冲突是提醒仓库同步的关键。四、远程仓库与协作4.1 远程仓库形式4.1 SVN vs GitSVN与Git是常用的两个远程仓库但是两者有着根本性的差异是否为中心化。首先我们要理解什么是中心化中心化通俗来说是只能依靠某一特定的对象充当服务的核心服务的实现不能离开这个中心。SVN中心化采用集中式版本控制架构存在唯一的中央服务器存储项目全部代码与版本历史开发者本地仅持有当前工作文件所有提交、更新、版本查询等操作必须联网与服务器交互依赖单一中心节点断网无法完成版本操作。Git去中心化采用分布式版本控制架构无唯一中心服务器每个开发者本地都拥有完整的项目仓库副本包含全部代码、历史版本、分支可离线完成提交、分支、回滚等操作远程仓库仅作为协作同步节点各节点地位对等实现去中心化协作。4.2 协作协作即多人共同维护、开发同一个项目通过版本控制工具同步代码、合并修改、解决冲突保障开发流程有序推进。项目开发时开发者先将远程仓库代码克隆到本地在本地完成编写、测试、版本提交联网后将本地代码推送至远程仓库多人之间通过拉取最新代码、合并分支完成代码同步。4.2.1 SVN 协作模式以中央服务器为唯一核心开发者直接向服务器提交代码所有修改集中在服务器合并冲突在线上处理分支功能薄弱适合小规模团队线性开发提交即直接修改中心仓库风险较高。4.2.2 Git 协作模式采用本地开发→远程同步的模式先在本地完成提交、分支开发再推送至远程支持多分支并行开发冲突优先在本地解决可通过 Pull RequestPR实现代码评审适配大型团队、开源项目的多人协作远程仓库不直接修改主分支安全性更高。4.2.3 两种远程连接方式HTTPS简单每次推送需输入账号密码 / 令牌SSH免密登录Linux/Gitee 推荐使用总结本节对git讲解就到这里了这只是对git的初步使用的讲解如果有需求的可以继续查询这方面的有关知识感谢您的阅读我们下节再见。