恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Git——版本控制器

  • 首页
  • 资讯中心
  • /
  • Git——版本控制器

相关资讯

MySQL零基础入门指南:从建库建表到索引优化与SQL注入防御 2026/8/27 11:04:22
Navicat密码解密:如何找回忘记的数据库连接密码 2026/8/27 11:04:22
洛雪音源汇总指南:22 个音源从安装到换源的完整教程 2026/8/27 11:04:22

最新资讯

纯方位无源定位原理与Python实现:从数学建模到无人机编队应用
Unlock Music Electron:一键加密音乐解锁,.ncm / .qmcflac / .kgm 转 MP3 只需三步
小样本预测利器:灰色预测GM(1,1)模型原理与Python实战
工业零件目标检测数据集:小样本、高精度落地实践指南
AI Agent爆火后,MCP到底是个什么神器?看完这一篇你就知道了!!
操作教程丨MaxKB+Ollama:快速构建基于大语言模型的本地知识库问答系统

今日推荐

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用
LeetCode Hot100(51-60)算法精解与面试技巧
CRC校验实战:从模2除法到HJ212协议排错

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

Git——版本控制器

发布时间:2026/8/27 11:04:22
Git——版本控制器 Git1、git的历史2、理解git的版本控制2.1、情景理解2.2、“备份”的方式3、git github gitee3.1、git简单认识3.2、github和gitee的简单认识4、git操作4.1、创建仓库4.2、拉取远端仓库到本地4.3、“仓库”的定义4.4、管理代码5、关于git的两个子问题5.1、.gitignore5.2、不同系统的干扰问题5.2.1、新增文件5.2.2、修改同一个文件6、git指令汇总我们之前学习C语言的时候也做过将编写的代码通过“小乌龟”上传到gitee中的代码仓库里。这个过程与git有着千丝万缕的关系。那么git到底是什么1、git的历史Linus将Linux开源之后就一定会收到来自世界各地的工程师提交的修改代码。那么Linus就必须亲自检查提交的代码并且手动将修改代码与原代码合并。与此同时Linus还必须将每一次修改后的Linux版本做一个标记比如v1版本、v2版本…手动进行代码管理将会是一个庞大而复杂的工程。Linus首先想的是市面上有没有现成的代码版本管理的工具但是当时大部分代码管理软件都是收费的这与Linus开源的理念不符。有一家企业发现了当时Linux社区急需代码版本管理的要求于是这家企业做出了一个比较伟大的决定他们旗下的代码管理软件对其它用户收费而对Linux社区免费。然而好景不长Linux社区中有几个坐不住的工程师企图破译这家企业为他们提供的免费软件。企业发现了他们的破译行为后收回了免费的代码版本管理软件。这就倒逼Linus自己写出了一款代码版本管理软件并将这个软件开源了——这个软件就是git。git: global information tracker意为“全球信息追踪器”。2、理解git的版本控制对代码文本做历史版本的管理叫做版本控制。我们来想象一个情景来帮助我们更好地理解版本控制2.1、情景理解学校里有一个很严厉的C语言老师——孙老师。一天孙老师布置了一个作业要求同学们写一个“贪吃蛇”小程序并提交实验报告。学生李四很快就完成了代码的编写并完成了第一版实验报告。李四马上就把报告给老师看可是老师给李四挑出了不少毛病叫李四回去再改改。于是李四改出了第二版、第三版、第四版…可是每一版孙老师都不满意。最后孙老师做出了让步要求李四将李四的第二版实验报告交上来。这时李四犯了难实验报告都被改得“面目全非”了我哪里还清楚第二版实验报告长什么样要是第二版实验报告有保存就好了。于是李四只能伤心地坐在桌前发呆。同宿舍的学生张三也编写好了代码完成了实验报告。张三将实验报告交给孙老师孙老师也毫不意外地叫张三再去改改。这时张三吸取了李四的教训每一次修改实验报告张三都会将修改前的实验报告复印一份做备份然后修改实验报告…后来孙老师要求张三别再改了叫第一版实验报告上来就可以了这时张三就顺利地上交了之前第一版实验报告的备份件完成了孙老师的作业。在这个故事中张三和李四就是现实中的程序员孙老师就是项目经理/产品经理实验报告就是代码文本张三对实验报告进行历史版本管理的行为就是版本控制。2.2、“备份”的方式其实上面对于张三的行为就是版本控制这个说法还是不太准确的。我们对于编写完的代码改出了许多个版本。这些版本中有的只删除了一两行代码有的只修改了一两行代码有的只增加了一两行代码。难道我们只做一点点修改就要将整个代码文本全部备份下来吗这样就很浪费磁盘空间了。我们不需要备份全部代码只需要对修改的行为进行备份记录就可以。这样我们就可以只维护一份代码也能够实现对代码版本的管理。比如我们有以下的操作版本修改行号修改行为修改内容第二版5删除XXXXX第三版6修改mian 改为 main第四版7增加printf(“helloworld.”)假设我们维护的是最初版的代码。我们按照版本顺序依次执行操作得到每个版本的代码就是版本控制对于某个版本的代码执行逆操作回退到之前的版本就是版本回退。3、git github gitee3.1、git简单认识对于上面对代码进行历史版本管理的方式用C/C实现并且做出软件这个软件就是git。(其实是git是这类软件里的一种)我们继续之前张三的故事。后来张三知道了孙老师这种捉弄人的癖好就在孙老师门口贴了这样一张告示各位亲爱的孙老师的学生们你们提交作业给孙老师的时候孙老师一定会叫你们一改再改等到你们把作业改得面目全非的时候孙老师一定会要求你们提交你们前面某个版本的作业。我建议你们把每次修改完的作业给我我来给你们做版本管理这样孙老师就拿你们没有办法了。我的XXX号是XXX…于是张三收到了来自王五、赵六…很多同学的请求。比如对于王五张三就在自己的windows服务器上新建了一个名为“王五”的文件夹文件夹里保存的是王五作业的所有历史版本此时“王五”文件夹就是王五的代码仓库。很明显代码仓库就是放置所有历史代码版本的地方。聪明的张三还想到了万一有一天自己的windows服务器挂了所有版本的代码就都找不回来了。于是张三就购置了一台远端的Linux服务器将所有人的代码仓库拷贝到远端服务器上并且做好远端服务器与自己服务器的实时同步更新。这种实时同步更新就需要git具有网络通信功能。所以git就需要做到可以在本地进行代码的版本控制可以进行网络通信以同步更新本地和远端的数据所以我们也称git是去中心化的、分布式的多版本控制器去中心化每个用户的每台服务器都能做代码的版本控制。分布式git既能做版本控制又能做网络通信所以git是集客户端与服务端于一体的软件。3.2、github和gitee的简单认识git能做到版本控制、网络通信。对于版本控制有人希望版本控制的操作变得更简便比如将git的操作包装成图形化界面以方便使用。所以就有了我们今天的“小乌龟”一类的软件。对于网络通信有人希望自己服务器能够通过一个统一的站点进行对远端服务器的网络通信从而使网络通信的过程更安全。所以就有了我们今天的github, gitee一类的基于git的网站。4、git操作我们以gitee网站为例演示创建仓库、连接仓库、上传代码与代码版本管理的过程。4.1、创建仓库打开gitee网站注册账号然后按右上角加号创建仓库。对于选项建议勾选“开源”勾选“初始化仓库”设置语言都为C设置开源许可证为MIT勾选“设置模板”勾选“Readme文件”“分支模型”一栏使用默认值即可注意开源许可证规定了开源代码的用途范围。这意味着开源 ! 完全开放源代码。如果勾选“私有”可能需要用户手动添加不同身份的其它用户以达到多人协作管理仓库代码的目的。4.2、拉取远端仓库到本地首先远端服务器需要git本地服务器也需要git。那么我们就需要在自己的服务器上下载gitsudo apt -y install git接着是拉取远端仓库git clone [仓库地址]当然还要按照提示做两次git config的配置否则之后代码提交会失败。这时我们就有了一个与gitee仓库同名的目录4.3、“仓库”的定义我们之前一直以为像这样以远端仓库的名称建成的目录就是所谓的“仓库”。我们执行ls -al就会发现当前目录下有一个隐藏文件.git其实.git才是当前目录仓库的核心。本地代码版本的修改记录都记录在.git中。我们认为.git是狭义上的仓库。我们以后称仓库指的就是.git。而对于目录仓库我们可以把它看作一个包含.git, .gitignore, README以及开源许可证的结构即可。4.4、管理代码比如我们把写好的进度条代码拷贝到拉取完成的目录下此时这些新加进来的代码就是“第一代实验报告”。提交代码有“三板斧”操作功能git add .添加代码到本地仓库的暂存区git commit -m XXX提交代码到本地仓库(正式不能反悔)提交日志git push本地和远端同步.git下有一个文件index这个文件就是暂存区执行git add .的时候代码的修改记录只会提交到index中。文件index不能轻易乱动否则代码无法提交。接着git commit -m XXX代码的修改记录就从暂存区真正提交到本地仓库里了。这里要注意一下-m XXX提交的是提交日志提交日志可不能乱写应该写清楚当前的版本对于前一版代码做了什么变了什么我们想查看提交记录可以执行git log。这样我们就可以溯源一些大项目代码以帮助我们观察学习。值得一提的是我们tree一下.git就会在.git内找到一些十六进制长串信息我们可以认为这就是修改记录当我们修改了文件内容再执行git add .之后修改记录就会增加5、关于git的两个子问题5.1、.gitignore文件.gitignore是一个文件后缀过滤器.gitignore过滤的是其上记录的后缀的文件使得这些文件不会被添加与提交。当前.gitignore文件长这样#Prerequisites*.d#Compiled Object files*.slo*.lo*.o*.obj#Precompiled Headers*.gch*.pch#Compiled Dynamic libraries*.so*.dylib*.dll#Fortranmodulefiles*.mod*.smod#Compiled Static libraries*.lai*.la*.a*.lib#Executables*.exe*.out*.app我们当前还有一个进度条项目。执行make后会生成一些临时文件当我们添加、提交代码并和远端同步时我们发现临时文件并没有被上传这就是.gitignore过滤文件的作用当然我们也可以在.gitignore文件中添加一些后缀以过滤掉我们不想要的文件。但是我们必须先配置好.gitignore文件并提交和远端同步这样.gitignore的配置才能生效(配置好了git commit的时候就会生效)。5.2、不同系统的干扰问题对于同一个远端仓库可能同时有多个不同的本地仓库连接这些本地仓库可能是同一种操作系统的也可能是不同操作系统的。不同操作系统下的不同仓库同时对同一个远端仓库进行代码管理会发生干扰。下面我们利用现有的Linux仓库同时新建一个windows下的仓库来演示干扰的解决过程。5.2.1、新增文件比如windows上也有一个程序员连接了同一个仓库。今天windows程序员写了一个wcode.c文件并且完成了提交与同步Linux程序员查看自己的本地仓库时没有发现wcode.c并且Linux程序员想提交写好了的lcode.c结果能提交但是同步不了这是因为此时的远端仓库已经被windows程序员同步更新过了Linux程序员能够提交代码到本地仓库但是同步到远端仓库就发生报错。Linux程序员就需要先拉取最新的远端仓库执行git pull(直接执行git pull会有问题可以求助AI)此时Linux下也有了wcode.c并且Linux程序员也可以正常提交和同步代码了。由于Linux程序员进行了提交与同步windows程序员想直接提交与同步代码就会失败所以windows程序员也必须先拉取最新的仓库。这样我们就可以做到多人协作共同往一个仓库添加文件。5.2.2、修改同一个文件比如针对上面的wcode.c文件今天Linux程序员往wcode.c里面加了点东西然后完成了提交与同步windows程序员没有进行最新仓库的拉取当然是看不到Linux程序员的修改的。与此同时windows程序员也想往wcode.c里写点东西自然windows程序员需要先拉取当前最新仓库才能同步代码。但是我们发现拉取仓库之后wcode.c似乎变成了这样我们可以认为两台机器对同一个wcode.c做了不同的修改而git不知道wcode.c究竟要被修改成什么样于是git干脆把所有的修改内容合并在一块。这时就需要我们手动修改。其实不同机器修改同一个文件的情况是可以避免的因为程序员之间可以互相通信互相协调嘛。或者在一个项目中一个程序员一个目录大家互不干扰。6、git指令汇总至此我们提炼出一些常见的git指令操作功能git add .添加代码到本地仓库的暂存区git commit -m XXX提交代码到本地仓库(正式不能反悔)提交日志git push本地和远端同步git clone克隆远端仓库到本地git log查看历史提交记录git status查看是否有文件还未被提交git pull拉取远端最新的仓库演示代码

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号