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

Git简介和发展

Git

简介

  • Git是一个开源的分布式版本控制系统,跨平台,支持Windows、Linux、MacOS。主要是用于项目的版本管理,是由林纳斯·托瓦兹(Linux Torvalds)在2005年为Linux内核开发而创建。

起因

  • 在2002年至2005年间,Linux内核开发团队使用BitKeeper(一个专有的版本控制系统)来管理代码,Linux团队汇集了全球顶尖人才,免不了有人想破解BitKeeper的软件,BitKeeper的开发公司BitMover在2005年停止了向Linux团队的免费版本支持。
  • 于是成功惹怒了Linus这位大佬,迫使Linus寻找一个高效、分布式的版本控制工具。由于对当时其他工具(如SVN、CVS)的性能和功能不满,Linus决定开发一个自己的版本控制系统,然后一周后,Git这个延续至今的闪耀新星诞生。只能说大佬就是大佬。
  • 站在历史的角度来说,BitKeeper公司也是错过了一次流芳百世的机会/商机,如果BitKeeper公司继续提供使用,可能也不会有Git的问世。历史的滚滚车轮总是这么奇妙,悄无声息,又很神秘,好像一切都是安排好的一样。

设计目标

  • 高效性:能够快速处理大型项目(如Linux内核)的版本控制
  • 分布式:允许开发者在本地操作完整的历史记录,无需依赖中央服务器
  • 数据完整性:通过SHA-1哈希确保版本历史的可靠性
  • 简单易用:提供直观的命令和灵活的工作流程

发展历史

  • 几个关键阶段

    • 2005年4月7日正式上线

    • 2005-2008年:社区接管与功能完善

    • 2008-2012年:普及与生态系统繁荣

    • 2012-2020年:性能优化与新功能

    • 2020年至今:现代化与企业级应用

当今地位

  • 普及度:Git是全球最流行的版本控制系统,几乎所有主流代码托管平台(Github、GitLab、Bitbucket)都是以Git为核心
  • 影响力:Git不仅用于软件开发,还被应用于书籍写作、法律文档管理、数据科学等领域
  • 维护:Git由开源社区进行维护,拥有全球顶尖的开发者贡献者,代码托管在GitHub上

Git下载与安装

  • 官网地址:https://git-scm.com/
    在这里插入图片描述
  • GitHub地址:https://github.com/git/git

在这里插入图片描述

基本概念

  • 仓库(Repository):存储代码和版本历史的地方,分为本地仓库和远程仓库。
  • 提交(Commit):代码变更的快照,记录修改内容和元数据(如作者、时间)。
  • 分支(Branch):代码的独立开发线,默认分支通常为main。
  • 合并(Merge):将不同分支的更改整合到一起。
  • 远程仓库(Remote):托管在服务器上的仓库,如GitHub、GitLab。

常用命令

  • 初始化:git init(创建新仓库)
  • 克隆:git clone (复制远程仓库)
  • 添加:git add (将更改加入暂存区)
  • 提交:git commit -m “message”(保存更改到本地仓库)
  • 推送:git push origin (上传本地更改到远程仓库)
  • 拉取:git pull(从远程仓库获取更新)
  • 分支:git branch(查看分支)、git checkout -b (创建并切换分支)
  • 合并:git merge (合并分支)

应用场景

  • 软件开发:管理代码版本,支持团队协作。
  • 开源项目:通过GitHub等平台实现全球开发者贡献。
  • 非代码场景:管理文档、配置文件、数据科学项目等。
http://www.xdnf.cn/news/371485.html

相关文章:

  • 代码复用与分层
  • 双目视觉系统中,极线校正(Epipolar Rectification)与单应性矩阵/多平面单应性模型
  • 通过推测搜索加速大型语言模型推理 (SpecSearch) 论文总结
  • 零基础入门MySQL:10分钟搞定数据库基本操作
  • tryhackme——Enumerating Active Directory
  • 【Linux】冯诺依曼体系结构和操作系统的理解
  • Webug4.0通关笔记25- 第30关SSRF
  • JS较底层的用法,几类简单介绍
  • 计算机网络基础科普
  • C语言复习--柔性数组
  • 如何在mac上使用便利贴
  • 青少年编程与数学 02-019 Rust 编程基础 06课题、容器类型
  • Docker镜像搬运工:save与load命令的实战指南
  • 【Android】文件分块上传尝试
  • 【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路
  • 基于GF域的多进制QC-LDPC误码率matlab仿真,译码采用EMS算法
  • Spring之AOP
  • 信息检索(包含源码)
  • 服务预热原理
  • 动态路由EIGRP的配置
  • AutoGen+Deepseek+chainlit的简单使用
  • iOS瀑布流布局的实现(swift)
  • HNUST湖南科技大学-软件测试期中复习考点(保命版)
  • Kubernetes应用发布方式完整流程指南
  • Dia浏览器:AI驱动浏览网页,究竟怎么样?(含注册申请体验流程)
  • Harness: 全流程 DevOps 解决方案,让持续集成如吃饭般简单
  • 【字节拥抱开源】字节豆包团队开源首发 Seed-Coder 大模型
  • QSFP+、QSFP28、QSFP-DD接口分别实现40G、100G、200G/400G以太网接口
  • Flask 调试的时候进入main函数两次
  • 机器学习扫盲系列-深入浅出“反向传播”(二)