码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Git-概念与架构


    GIT-概念与架构

    • 一、背景和起源
    • 二、版本控制系统
      • 1.版本控制分类
        • 1.1 集中式版本控制
        • 1.2 分布式版本控制
      • 2.Git和SVN对比
        • 2.1 SVN
        • 2.2 GIT
    • 三、GIT框架
      • 1.工作区(working directory)
      • 2.暂存区(staging area)
      • 3.本地仓库(local repository)
      • 4.远程仓库(remote repository)
      • 5.隐藏区(stash area)
      • 6.远程仓库副本(remote repository copy)
    • 四、GIT开发工作流程
    • 总结
        • 参考

    一、背景和起源

    2005年之前Linux内核开发都是由非开源BitKeeper进行版本控制。Linus Torvalds为了摆脱非开源的限制问题,构建了一个与开源的并发版本系统SVN理念完全相反的版本控制系统。这个分布式的版本控制系统最后发展成了现在广泛使用的git。

    二、版本控制系统

    1.版本控制分类

    1.1 集中式版本控制

    版本库是集中存放在中央服务器,开发者使用电脑进行开发工作。每次工作都需要先从中央服务器获取代码最新版本到本地,本地修改之后需要推送到中央服务器上。

    1.2 分布式版本控制

    版本库没有中央服务器概念,远程仓库只是为了开发者方便交换各自的修改。每个开发者电脑上都有一个完整的版本库。每次工作不需要联网,可以进行修改、版本对比、提交代码等,只需要在联网的时候将本地版本库同步到远程仓库即可。

    2.Git和SVN对比

    2.1 SVN

    • SVN属于集中式版本控制系统
    • SVN需要联网才能工作
    • SVN操作需要访问中央服务器仓库,处理速度相对慢

    2.2 GIT

    • GIT属于分布式版本控制系统
    • GIT不需要强制联网也可工作
    • GIT绝大部份操作都是访问本地版本库,因此处理速度快

    三、GIT框架

    GIT架构主要分为以下几个部份:

    • 本地工作区(working directory)
    • 暂存区(staging area)
    • 本地仓库(local repository)
    • 远程仓库(remote repository)

    整体架构如下图:
    在这里插入图片描述

    1.工作区(working directory)

    工作区就是本地工作目录,工作区包含新增文件和自己的修改内容。

    2.暂存区(staging area)

    暂存区是将修改提交到本地仓库前的一个过渡区域,主要是方便可以将部分修改提交的情况。工作目录下.git目录下的index文件就是暂存区内容。

    • git add命令可以将工作区内容添加到暂存区。
    • git checkout命令可以将暂存区内容覆盖工作区内容。

    3.本地仓库(local repository)

    版本控制系统保存在本地。工作目录下.git目录就是本地仓库内容。

    • git commit命令可以将暂存区内容添加到本地仓库。
    • git reset命令可以将本地仓库内容覆盖暂存区内容。

    4.远程仓库(remote repository)

    远程仓库主要是为了开发者交流修改而设置的一个中间仓库。

    • git push命令可以将本地仓库内容添加到远程仓库。
    • git pull命令可以将远程仓库内容拉取到本地仓库。

    5.隐藏区(stash area)

    隐藏区主要是为了将正在修改并且还没有提交的代码保存起来防止丢失,方便开发者进行多种开发任务的切换。如果遇到紧急情况,可以将当前任务的修改保存到隐藏区,然后开发者可以进行分支切换或者其他开发工作,完成紧急任务之后,可以从隐藏区恢复之前的修改继续原有开发工作。

    • git stash命令可以将工作区和暂存区内容添加到隐藏区。
    • git stash pop命令可以隐藏区内容恢复到工作区。

    6.远程仓库副本(remote repository copy)

    存在于本地的远程仓库的缓存。如需更新,可通过git fetch/pull命令获取远程仓库内容。使用fech获取时,并未合并到本地仓库,此时可使用git merge实现远程仓库副本与本地仓库的合并。

    四、GIT开发工作流程

    开发者利用git进行协作进行开发工作流程如下:

    • 克隆 Git 资源作为工作目录。
    • 在克隆的资源上添加或修改文件。
    • 如果其他人修改了,你可以更新资源。
    • 在提交前查看修改。 提交修改。
    • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
      在这里插入图片描述

    总结

    主要介绍版本控制系统起源,git和svn简单对比,git的整体架构和开发工作流程。

    参考

    1.简书:GIT-概述与架构
    2.Git版本管理原理
    3.Git Book
    4.Runoob git教程

  • 相关阅读:
    LINUX 用户和组操作
    高阶数据结构---树状数组
    C++11重写muduo网络库2—Cmake,nocopyable,logger,Timestamp,InetAddress
    [事务]-事务概念/特性/并发问题/传播特性
    机器学习/人工智能的笔试面试题目——CNN相关问题总结
    链表oj题(第一弹)
    Java异常编程题(巩固语法)
    前端 class 和 id 问题
    python自动化运维——模拟键盘鼠标重复性操作Pyautoui
    形态学笔记:侵蚀+膨胀+开运算+闭运算+形态学梯度+顶帽运算+黑帽运算
  • 原文地址:https://blog.csdn.net/wlphlj/article/details/134428530
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号