git原理解释,windows 10 / ubuntu 24.04 安装使用 github
git的原理
git是赫赫有名的Linux之父Linus Torvalds从2005年起开发的文件版本管理系统,掌控Linux内核这样一个最为重量级的世界产品的Linus为什么要开发这个东西呢?因为Linux系统由全世界的程序员协作维护,对源代码文件的版本控制管理的需求超过了任何一个软件项目,因此Linus才会为此发力。
git以前的文件版本管理软件大多为集中管理式,即完整的文件历史记录只存在于服务器,其它用户只获取自己当前工作需要的那一小部分内容,这样产生的问题就是一旦服务器不可连接,大家就无法协作,一旦服务器硬盘被损坏,整个文件的历史就丢失了,所以,这样的模式注定是脆弱的。
于是git应运而生,Linus的做法是,每个用户的电脑上都和服务器上一样有完整的历史记录,相当于每个用户的电脑都给服务器做了一个镜像备份,这样,即使服务器不可连接,用户也拥有完整的历史记录,如果服务器损坏,不仅不影响用户的使用,还能从用户的镜像备份中自我恢复,可以说,git是去中心化的典型,Linus不仅是伟大的程序员,更是伟大的思想家。
git为Linux内核的开发而诞生,因此它从一开始就有着极高的规格:
1. 极速
2. 简明
3. 支持并行开发(想想Linux有多少个发行版)
4. 分布式(每个用户都有完整的历史记录镜像)
5. 支持超大规模的项目(比Linux内核更大的项目也不多了吧)
git在文件管理技术上的革新是将以往的差异存储(delta)改为拍照存储(snapshot),也就是说,git以前的文件版本管理系统是保存每个文件的变化量,以此为基础来合成各个时期的文件版本,而git没有存储文件的变化量,它存储的是文件发生变化时的整体拍照,也就是用更多的存储空间获得更快的使用效率。一个是穷人思维,一个是富人思维,穷人总是舍不得丢弃旧东西,把时间花在修补缝合上,富人是只要出了新品那就买全新的,节省时间。这里的哲学是,如果一系列的操作被频繁地使用来产生某个固定的结果,那么,这个固定的结果就应该被缓存起来,以避免不断重复的操作所消耗的时间,因为时间永远都比任何其它的东西贵重,只要能缩短需要的时间,人类会为此付出任何代价。
git使用SHA-1算法来验证文件的内容和目录的结构,此算法产生的校验和(checksum)被git十分看重,git的数据库存储了所有的文件内容和目录结构的校验和,以此来确保文件内容和目录结构不被篡改。这其实就是区块链的做法,git从2005年诞生起就采用了这样的做法,从技术架构上来看,区块链引发的第三次信息技术革命的始祖其实是git。
因为git在本机保存有完整的文件历史镜像,与服务器的内容一样,因此我们绝大多数时候都只需要在本机操作,只在一切完成妥当以后,将本地的镜像与服务器同步。
我们用 git init 命令创建一个git仓库,它会创建一个名为 .git 的隐藏文件夹,里面存放的东西主要是以下两部分内容:
1. 完整的文件历史镜像,也叫 repository,这就是正式的文件仓库,存放的是已经提交的(commit)文件。
2. staged区,这里存放的是准备提交到repository的文件的快照,我们用 git add <a_file> 命令的时候,就是将 a_file 的内容拷贝到了 .git 的 staged 区,拷贝完毕以后我们可以接着修改 a_file 的内容而不会影响已经存放在staged区的 a_file 的快照内容。
.git 隐藏文件夹所在的目录下的其它文件和文件夹叫做工作区(workspace),就是我们日常修改文件的地方。
因此,git的使用流程通常如下:
1. 在工作区修改文件,到了一个满意的程度时,将它add到staged区,使用 git add <a_file> 命令。
2. 将所有需要提交到repository的文件都add到staged区以后,用git commit命令将它们提交到repository.
3. 用git push命令将本地的repository的新内容同步到服务器的repository.
创建账号、access token和repository
首先在github注册账号
创建一个repository,比如 https://github.com/SiJinmin/buda
生成access token
现在github用git push上传文件的时候不能用用户名+密码的方式授权,要用 access token的方式授权,因此我们要先在github上生成access token。
点击github网站上右上角的头像,选择settings,
选择左边底部的developer settings,
点击左边personal access tokens下面的tokens(classic),
点击generate a personal access token
1. note 下填写 linux git push
2. expiration 选择 no expiration
3. select scopes: 只需要勾上 repo下面的public_pro即可,其它的都不用勾
点击generate token按钮,及时保存好它,仅此一面之缘。
Windows 10 下载安装git
Git - Downloading Package
https://github.com/git-for-windows/git/releases/download/v2.45.2.windows.1/Git-2.45.2-64-bit.exe
安装过程中,除了以下2步,其它步骤使用默认选项
choosing the default editor: visual studio code
configuring the line ending conversions: checkout as-is, commit as-is
安装完毕以后从开始菜单中将git bash固定到任务栏,打开git bash, 即为git的命令行界面。
Ubuntu 24.04 安装git
# sudo apt install git
设置第一次输入用户名和密码后保存access token,免除后续输入,36000000表示每10000个小时以后需要重新输入密码。
# git config --global credential.helper cache
# git config --global credential.helper 'cache --timeout=36000000'
使用git的常用操作 (windows和linux相同)
在git的命令行中注册github账号
# git config --global user.email "jinmin.si@outlook.com"
# git config --global user.name "SiJinmin"
设置运行 git init 命令时默认的 branch 名称
# git config --global init.defaultBranch main
查看注册的信息是否正确
# git config --list
初始化一个git repository的两种方法,一种是git clone, 另一种是git init。
1. git clone: 将远程repository拷贝到本地 (不支持断点续传)
# cd /d/code
# git clone https://github.com/SiJinmin/buda
git clone 虽然是进行项目初始化的最简单方法,但在国内对github使用git clone命令时很慢且容易断线,不能断点续传,因此有时候我们可能需要使用下面的第二种方法进行项目的初始化。
2. git init: 为本地常规文件夹添加 git repo (支持断点续传)
# cd /d/code && mkdir buda && cd buda
创建 .gitignore 文件用来设置不需要上传的本地文件,比如node_modules。
# git init
# git remote add origin https://github.com/SiJinmin/buda
# git fetch
# git checkout main
git fetch/pull 命令支持断点续传。
修改文件、查看状态
在本地文件夹 /d/code/buda 中增删改文件,查看文件的修改状态、目前所在的 branch
# git status
上传到github
# cd /d/code/buda
# git add -A && git commit -m "init files" && git push
查看修改内容
# git diff
初次上传时会提示输入密码
参考资料
Git - Book
Github断点续传(git clone 经常失败)_git clone断点续传-CSDN博客
https://www.cnblogs.com/upstudy/p/15870787.html
https://juejin.cn/post/6844903830195273736
【已解决】fatal: Authentication failed for ‘https://github.com/.../‘-CSDN博客
如何让Git记住你的GitHub Token,避免每次都要重复输入?-腾讯云开发者社区-腾讯云
相关文章:

git原理解释,windows 10 / ubuntu 24.04 安装使用 github
git的原理 git是赫赫有名的Linux之父Linus Torvalds从2005年起开发的文件版本管理系统,掌控Linux内核这样一个最为重量级的世界产品的Linus为什么要开发这个东西呢?因为Linux系统由全世界的程序员协作维护,对源代码文件的版本控制管理的需求…...

requests post json/data;requests response 接收不同数据
1、requests post json/data 在Python的requests库中,当你发送POST请求时,可以选择使用json参数或data参数来传递数据。这两者之间的主要区别在于它们如何被序列化和发送到服务器。 json参数: 当你使用json参数时,requests库会自…...

【qt】平面CAD(计算机辅助设计 )项目 上
CAD 一.前言二.界面设计三.提升类四.接受槽函数五.实现图形action1.矩形2.椭圆3.圆形4.三角形5.梯形6.直线7.文本 六.总结 一.前言 用我们上节课刚刚学过的GraphicsView架构来绘制一个可以交互的CAD项目! 效果图: 二.界面设计 添加2个工具栏 需要蔬菜的dd我! 添加action: …...

C++中bool类型的使用细节
C中bool类型的使用细节 ANSIISO C标准添加了一种名叫bool的新类型(对 C来说是新的)。它的名称来源于英国数学家 George Boole,是他开发了逻辑律的数学表示法。在计算中,布尔变量的值可以是true或false。过去,C和C一样,也没有布尔…...

Java 面向对象 -- Java 语言的封装、继承、多态、内部类和 Object 类
大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 007 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…...

【C++】和【预训练模型】实现【机器学习】【图像分类】的终极指南
目录 💗1. 准备工作和环境配置💕 💖安装OpenCV💕 💖安装Dlib💕 下载并编译TensorFlow C API💕 💗2. 下载和配置预训练模型💕 💖2.1 下载预训练的ResNet…...

HTML5 Web SQL数据库:浏览器中的轻量级数据库解决方案
在HTML5时代,Web开发迎来了一系列创新特性,其中之一便是Web SQL数据库。尽管Web SQL标准已被W3C废弃,转而推荐IndexedDB作为替代,但了解Web SQL对于学习Web存储技术的演进历程仍有其价值。本文将详细介绍Web SQL数据库的基本概念、…...

C++ const关键字有多种用法举例
C const关键字有多种用法 可以用来修饰变量、指针、函数参数、成员函数等。可以看到const在C中有多种用法,主要用于保证数据的不可变性,增强代码的安全性和可读性。在实际编程中,根据需要选择适当的const用法,可以有效避免意外修…...

Makefile-快速掌握
引用 本文完全参照大佬的文档写的,写这篇文章只是为了梳理一下知识 https://github.com/marmotedu/geekbang-go/blob/master/makefile/Makefile%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md 介绍 Makefile是一个工程文件的编译规则,描述了整个工程的编译…...

定个小目标之刷LeetCode热题(20)
这题与上一题有一点不同,上一题是判断链表是否存在环,这题是寻找入环的第一个节点,有一个规则是这样的,在存在环的情况下,运用快慢指针判断是否有环结束时,把快指针指向头结点,慢指针不变&#…...

短剧分销小程序:影视产业链中的新兴力量
一、引言 在数字化浪潮的推动下,影视产业正迎来一场深刻的变革。短剧分销小程序作为这场变革中的新兴力量,正以其独特的魅力和价值,逐渐在影视产业链中崭露头角。本文将探讨短剧分销小程序在影视产业链中的新兴地位、其带来的变革以及未来的…...

使用fvm切换flutter版本
切换flutter版本 下载fvm 1、dart pub global activate fvm dart下载fvm 2、warning中获取下载本地的地址 3、添加用户变量path: 下载地址 终端查看fvm版本 fvm --version 4、指定fvm文件缓存地址 fvm config --cache-path C:\src\fvm(自定义地址&…...

python通过selenium实现自动登录及轻松过滑块验证、点选验证码(2024-06-14)
一、chromedriver配置环境搭建 请确保下载的驱动程序与你的Chrome浏览器版本匹配,以确保正常运行。 1、Chrome版本号 chrome的地址栏输入chrome://version,自然就得到125.0.6422.142 版本 125.0.6422.142(正式版本) (…...

【C++】开源项目收集
C 是一种强大的、静态类型的通用编程语言,它的开源生态系统非常丰富,拥有众多高质量的项目。以下是一些知名的C开源项目: Boost: 这是一个庞大的库集合,提供了大量的实用工具和组件,如文件系统、网络编程、智能指针等&…...

爬虫相关面试题
一,如何抓取一个网站? 1,去百度和谷歌搜一下这个网站有没有分享要爬取数据的API 2, 看看电脑网页有没有所需要的数据,写代码测试调查好不好拿,如果好拿直接开始爬取 3,看看有没有电脑能打开的手机网页&a…...

Spring Cloud Netflix 之 Ribbon
前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言前言1、负载均衡1.1、服务端负载均衡1.2、客户端负载均衡 2、Ribbon实现服务…...

C语言怎样记住那么多的颜⾊?
一、问题 ⾚、橙、⻩、绿、⻘、蓝、紫,如此之多的颜⾊,数字不好记,英⽂看程序还可以, 直接写也不好写。那么怎样记住那么多的颜⾊呢? 二、解答 颜⾊枚举值如下: enum COLORS {BLACK, /*O⿊*/BLUE, …...

LabVIEW软件开发任务的工作量估算方法
在开发LabVIEW软件时,如何准确估算软件开发任务的工作量。通过需求分析、功能分解、复杂度评估和资源配置等步骤,结合常见的估算方法,如专家判断法、类比估算法和参数估算法,确保项目按时按质完成,提供项目管理和资源分…...

【已解决】引入 element 组件无法使用编译错误 ERROR Failed to compile with 1 error
如果大家使用这个vue 配合 element 框架不熟练,当你顺利按照文档安装好 vue 和 element 的时候想要使用element 的组件时候确无法展示出来,甚至报错。不妨看看是不是这个问题, 1.首先使用element 的时候,前提是把必须要的 elemen…...

Prometheus的四种指标类型
目录 一、Counter 计数器 1.1Counter 是计数器类型 1.2Counter 类型示例 二、Gauge 仪表盘 2.1Gauge是测量器类型 2.2Gauge 类型示例 三、Histogram 累积直方图 3.1Histogram 作用及特点 3.2使用 histogram 柱状图 四、Summary 摘要 一、Counter 计数器 1.1Counter …...

FastDFS SpringBoot 客户端 Demo搭建,支持文件上传下载
一、准备 fastdfs-client-java 依赖包 1、从 Git 下载 FastDFS java client SDK 源码 https://github.com/happyfish100/fastdfs-client-java.git<fastdfs-client-java 源码见附件> 2、使用ant从源码构建 ant clean package3、使用maven从源码安装 mvn clean instal…...

十大成长型思维:定位思维、商业思维、时间管理思维、学习成长思维、精力管理思维、逻辑表达思维、聚焦思维、金字塔原理、目标思维、反思思维
一、定位思维 定位思维是一种在商业和管理领域中至关重要的思维模式,它涉及到如何在顾客心智中确立品牌的独特位置,并使其与竞争对手区分开来。以下是关于定位思维的清晰介绍: 1、定义 定位思维是一种从潜在顾客的心理认知出发,通…...

GraphQL(9):Spring Boot集成Graphql简单实例
1 安装插件 我这边使用的是IDEA,需要先按照Graphql插件,步骤如下: (1)打开插件管理 在IDEA中,打开主菜单,选择 "File" -> "Settings" (或者使用快捷键 Ctrl Alt S …...

vue3+ Element-Plus 点击勾选框往input中动态添加多个tag
实现效果: template: <!--产品白名单--><div class"con-item" v-if"current 0"><el-form-item label"平台名称"><div class"contaion" click"onclick"><!-- 生成的标签 …...

唯美仙侠手游【九幽仙域】win服务端+GM后台+详细教程
资源下载地址:九幽仙域搭建-...

Qt creator day2练习
使用手动连接,将登录框中的取消按钮使用第二种方式,右击转到槽,在该函数中,调用关闭函数,将登录按钮使用Qt4版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为“admin”,密…...

哪里有海量的短视频素材,以及短视频制作教程?
在当下,短视频已成为最火爆的内容形式之一,尤其是在抖音上。但很多创作者都面临一个问题:视频素材从哪里来?怎么拍摄才能吸引更多观众?别担心,今天我将为大家推荐几个宝藏网站,确保你素材多到用…...

文章MSM_metagenomics(三):Alpha多样性分析
欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 本教程使用基于R的函数来估计微生物群落的香农指数和丰富度,使用MetaPhlAn prof…...

Web前端与其他前端:深度对比与差异性剖析
Web前端与其他前端:深度对比与差异性剖析 在快速发展的前端技术领域,Web前端无疑是其中最耀眼的明星。然而,当我们谈论前端时,是否仅仅指的是Web前端?实际上,前端技术还包括了许多其他细分领域。本文将从四…...

AI 客服定制:LangChain集成订单能力
为了提高AI客服的问题解决能力,我们引入了LangChain自定义能力,并集成了订单能力。这使得AI客服可以根据用户提出的问题,自动调用订单接口,获取订单信息,并结合文本知识库内容进行回答。这种能力的应用,使得…...