当前位置: 首页 > news >正文

Git 入门知识详解

文章目录

    • 一、Git 是什么
      • 1、Git 简介
      • 2、Git 的诞生
      • 3、集中式 vs 分布式
        • 3.1 集中式版本控制系统
        • 3.2 分布式版本控制系统
    • 二、GitHub 与 Git 安装
      • 1、GitHub
      • 2、Git 安装

一、Git 是什么

1、Git 简介

Git 是目前世界上最先进的分布式版本控制系统。版本控制系统能帮助我们更好地管理文件内容的版本。以用 Microsoft Word
写毕业论文为例,手动复制文件管理版本存在诸多问题:

  1. 版本回退麻烦:难以快速找回特定历史版本的内容。
  2. 文件管理混乱:大量相似文件难以取舍,不敢随意删除。
  3. 协作困难:文件传递和合并改动操作复杂。

理想的版本控制软件应能自动记录文件改动,支持回退到任意历史版本,只呈现最新版本文件,还能支持多人协作编辑。为此,出现了一批版本控制软件,如 VSS、CVS、SVN、Git 等,其中 Git 占据绝对霸主地位。一般版本控制工具包含客户端(本地编写内容及记录版本)和服务端(可将内容和版本记录保存在远程)两部分。

2、Git 的诞生

1991 年 Linus 创建了开源的 Linux 系统,在 2002 年以前,世界各地志愿者通过 diff 方式将源代码文件发给 Linus,由他手工合并代码。Linus 反对使用集中式的 CVS 和 SVN,因其速度慢且必须联网使用,而商用版本控制系统需付费,不符合 Linux 开源精神。

2002 年,Linux 代码库规模增大,Linus 选择了商业版本控制系统 BitKeeper,BitMover 公司授权 Linux 社区免费使用。2005 年,因 Linux 社区有人试图破解 BitKeeper 协议,BitMover 公司要收回免费使用权。Linus 花两周时间用 C 编写了分布式版本控制系统 Git,一个月内 Linux 系统源码就由 Git 管理。2008 年,GitHub 网站上线,为开源项目免费提供 Git 存储,众多开源项目迁移至此。

3、集中式 vs 分布式

3.1 集中式版本控制系统
  • 特点:必须有中央服务器,中央服务器存放所有版本信息,程序员机器上只有某个版本,开发工作依赖中央服务器,需提交新版本或拉取最新版本。
  • 缺点:必须联网才能工作。若中央服务器在局域网,程序员回家无法加班;若在互联网,带宽和网速受限,影响文件提交速度。
  • 常见工具:CVS 是最早的开源免费集中式版本控制系统,但存在提交文件不完整、版本库损坏等问题;SVN 修正了 CVS 的一些稳定性问题,是目前使用最多的集中式版本库控制系统;还有收费的 IBM ClearCase,安装大、运行慢;微软的 VSS 设计反人类,微软自己都很少使用。
3.2 分布式版本控制系统
  • 特点:可以有中央服务器,中央服务器存放所有版本信息,程序员机器上也保存所有版本,中央服务器主要起网盘作用,即便没有也可正常工作。
  • 协作方式:每个人电脑都是完整版本库,工作时无需联网。多人协作时,可互相推送修改。
  • 优势:安全性高,某个人电脑坏掉可从其他人处复制版本库。实际使用中,通常有一台充当“中央服务器”的电脑方便交换修改。
  • 常见工具:除 Git 和 BitKeeper 外,还有 Mercurial 和 Bazaar 等,其中 Git 最快、最简单、最流行。

二、GitHub 与 Git 安装

1、GitHub

GitHub 是基于 Git 的远程文件托管平台,类似的还有 GitCafe、BitBucket 和 GitLab 等。Git 本身可实现版本控制,但内容和版本记录只能保存在本机,结合 GitHub 可将文件内容和版本记录同时保存在远程。使用场景分为无 GitHub 时仅在本地 .git 文件夹维护历史文件,有 GitHub 时在本地维护的同时将历史文件托管在远程仓库。

2、Git 安装

安装可参考:网址。Mac 和 Windows 系统下安装简单,点击操作即可;Linux
系统下安装步骤为解压、./configure、make、make install 。

http://www.xdnf.cn/news/135883.html

相关文章:

  • 人工智能与机器学习:Python从零实现逻辑回归模型
  • 【中级软件设计师】函数调用 —— 传值调用和传地址调用 (附软考真题)
  • 分享Matlab成功安装Support Package硬件支持包的方法
  • 第二章 信息技术发展(2.1 信息技术及其发展)
  • 达梦数据库运维
  • 常见缓存淘汰算法(LRU、LFU、FIFO)的区别与实现
  • MYSQL 常用字符串函数 和 时间函数详解
  • MyBatisPlus文档
  • 路由器的基础配置全解析:静态动态路由 + 华为 ENSP 命令大全
  • 一种专用车辆智能配电模块的设计解析:技术革新与未来展望
  • 京东以图搜图(拍立淘)API接口返回参数详解
  • ALTER TABLE 之痛 - 为何我们需要在线表结构变更?
  • 大数据开发环境的安装,配置(Hadoop)
  • 在 Spring Boot 中实现 WebSockets
  • 手写Java线程池与定时器:彻底掌握多线程任务调度
  • Linux驱动开发快速上手指南:从理论到实战
  • 液体神经网络LNN-Attention创新结合——基于液体神经网络的时间序列预测(PyTorch框架)
  • C++面试复习(7)2025.4.25
  • 珍爱网:从降本增效到绿色低碳,数字化新基建价值凸显
  • 【Java】Maven3.5.0安装
  • Operating System 实验二 内存管理实验
  • 驱动开发硬核特训 · Day 21(上篇) 抽象理解 Linux 子系统:内核工程师的视角
  • 三格电子——CAN消防设备光纤联网常见布线方式答疑
  • 【不同名字的yolo的yaml文件名是什么意思】
  • [特殊字符] Docker 从入门到实战:全流程教程 + 项目部署指南(含镜像加速)
  • 欧拉安装宝塔等,报错Errors during downloading metadata for repository ‘OS‘
  • 视频监控管理平台EasyCVR安防攻略:告别传统监控局限,视频监控上墙有哪些方式?
  • 【Python数据库编程实战】从SQL到ORM的完整指南
  • 基于Node+HeadlessBrowser的浏览器自动化方案
  • MCP协议:AI与工具无缝连接的“万能插头“及最佳实践指南