二级域名可以做不同的网站吗,同和网站建设,qq刷赞网站怎么做,宜宾汽车网站建设git的原理
git是赫赫有名的Linux之父Linus Torvalds从2005年起开发的文件版本管理系统#xff0c;掌控Linux内核这样一个最为重量级的世界产品的Linus为什么要开发这个东西呢#xff1f;因为Linux系统由全世界的程序员协作维护#xff0c;对源代码文件的版本控制管理的需求…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 --timeout36000000 使用git的常用操作 (windows和linux相同)
在git的命令行中注册github账号
# git config --global user.email jinmin.sioutlook.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避免每次都要重复输入-腾讯云开发者社区-腾讯云