git原理与上传
言:
git是一个软件,gitee/github是一个网站,这里有什么联系吗?我们身为一个程序员不可能不知道github,但是毕竟这是外国的网站,我们不翻墙的情况下,是无法访问的(或者就是太慢了,或者就是英语不好的同学不想使用),所以可以使用中国的平替gitee。我们一般通过它用来上传代码,但是各位可能都不清楚这到底是个啥?
因为我们以后可能会进行系统重装,所以一定要把文件上传到gitee/github中
今天我们就要来彻底搞懂它。
一、版本控制
这里引入一个小故事:
你的老师今天布置了一个作业,也就是C语言实验报告。此时你的朋友张三很积极,直接就完成了,并交给了老师,老师看了说:“同学,你这个代码无法运行,回去修改一下。”之后张三回去修改了一番并有交给了老师,但是老师又给张三打了回去,说错误还是很多。张三又修改又交给了老师,老师不耐烦了说:“你把第一个原始内容给我就行了。”张三傻眼了,他根本不知道他的初始报告。
但这时你就很聪明,你向张三进行了取经,知道了这个老师很刁钻,于是你先把你的第一版本交给老师,老师说不行,回去改。于是你在你电脑上拷贝了一份版本1(对于git来说就是记录修改日志),之后修改完以后又给老师,老师说不行。于是你又复制复制一份版本2,之后又修改交给老师,老师说:“哎呀,把你的第二版给我就行了。”于是你早有预备,之后就直接把版本2交给老师,老师又说:“哎呀,也不行,把你第一版给我就行了。”于是你又把第一版给他。那么好,你老师就老实了,AUV?这人不好搞啊,于是就让你过了。
此时你的同学们也有很多人没有提交,你就把你的二维码贴到了教室门口,就是说大家都把文件交给你,你负责管理他们给你的这些文件(注意这是例子),你帮他们存储起来,当他们老师要特定版本的时候,你就发给他们。
但是人太多了,你压力山大,没有那么多的精力搞这些。于是你就写了一个XX.exe执行程序,专门来存储这些文件。之后你就把这个XX.exe程序放在了一个服务器上。
于是大家现在扫码就会下载一个程序,之后大家就把自己写的文件直接放在这个XX.exe中即可。
此时你的XX.exe程序被一个清华大学的小王同学发现了,他感觉很好用,于是他把你的XX.exe程序升级成了一个网站(具体做法我也无从得知,毕竟人家是清华的),它允许所有人把文件上传到这个网站,当然这个网站就是根据你的程序做的。
以上我们说的XX.exe程序就相当于git,升级成为的网站就相当于gitee/github。
我们随意向老师提交各个版本,这也就叫做版本控制。
二、为什么要提交到网站上?
在window/Linux中的操作叫做git本地版本控制(这也叫做去中心化)。但是如果此时电脑坏了或者磁盘坏了,就需要去进行网络连接,也就是说gitee/github也就像云盘一样,会帮你把文件都保存在其他服务器上。
所以每一个人都可以把自己的文件都同步到服务器上。这个过程就叫同步。git也就是去中心化分布式的进行数据存储。
提交到网站上可以方便你的保存你的代码,以便你的磁盘出现问题无法修复。
这里还有一个小故事:
git的作者是谁?最开始的时候都是一些闭源的公司做这些项目的,但是LinuxOS是一直升级的,它就需要来保存历史版本。但是我们的林纳斯·本纳第克特·托瓦兹(也就是Linux作者)不会搞这些东西,但是有git这样的软件公司找Linux合作,免费记录各个Linux的版本,于是Linux历史版本也就保存在这个软件公司。但是后来Linux中有贡献代码的人爆出了这个软件公司的bug,软件公司很生气,于是就终止了与Linux的合作。
但是合作期间,由于要开源别人才能看你的代码,所以林纳斯·本纳第克特·托瓦兹了解很多关于软件公司的源代码,又因为闭源不符合开源的精神,于是林纳斯托瓦兹写了一个开源的git(据说是花费了两个星期),所以git的作者就是林纳斯托瓦兹。
我们平时使用的是gitee,这是中国基于git写的网站,加快了访问速度(因为github是国外的)。
三、git原理和提交
1.git命令集合
git clong 链接 --- 获取远端仓库
git status --- 查看git仓库的状态
git add test.c --- 文件添加到git中(git的暂存区)
git commit -m "" --- 比如: git commit -m "添加第一个源代码test.c"
git push --- 进行本地仓库和远地仓库的同步
git log --- 查看git提交信息
git pull --- 同步远端仓库
2.创建仓库
我们必须先下载git。
sudo yum install -y git
此时我们需要有gitee/github账号,以下使用gitee举例。
首先要新建仓库
这个仓库的名字为git_delete,之后点击克隆。
此时我们把仓库克隆下来:
本地仓库就是把修改记录保存在本地中,此时我们进入本地仓库(仓库本职业就是文件夹):
之后创建一个test.c文件,并写入以下内容:
此时我们创建了一个test.c文件放在了这个git_delete文件(仓库)中,但此时test.c和git没有任何关系。
当我们把源文件放入仓库中,默认这个源文件与项目没有任何关系。
add + commit才是正式把文件添加到本地git当中。
3.git仓库的结构
我们先来看git仓库的结构:
4.提交步骤
当我们add的时候,先提交到.git的暂存区中(index文件中),commit生成id添加到objects文件中。
我们commit之后tree .git查看文件目录:
此时我们再次进行状态查询:
此时我们就可以去官网查看我们提交的代码是否成功了:
此时查看git提交日志:
5.(.gitignore文件)
接下来我们看.gitignore文件的作用。
此时我们再.gitignore文件中添加*.txt内容。
此时我们再新建一些文件,其中包含test.txt文件:
此时打开网站观察结果:
6.配置git
当你首次执行git的push时可能会有这两条语句:
git config --global user.name "Your Name"
git config --global user.email you@example.com
此时我们可以配置以下,以便以后减少bug。
7.Windows和Linux共同管理仓库
此时还有一些问题,我们在Windows中新建了一个仓库,之后又在Linux中建了一个仓库,能不能同时对一个仓库进行管理呢?
前提是Windows中也要下载对应软件(git,小乌龟等)。此时在Windows中复制仓库连接,克隆在一个文件夹中。
此时在Windows中新建一个Windows文件夹并向其中写一个HelloWindowsGit.c的文件:
并提交这个git_delete文件(仓库),步骤一样:add , commit, push。
之后页面点击OK,之后点击"commit":
之后就是一路OK即可。此时去网站上查看:
但是此时你的Linux中仓库并没有修改。
此时我们先将之前的进度条代码再Linux中上传到远端仓库中(注意还是先add + commit):
此时有冲突,所以此时我们要先同步远端仓库,之后才能提交(要求本地仓库和远端仓库必须保持一致)。此时需要执行git pull,将远端仓库在本地同步:
因为我们刚才已经add + commit了,所以此时直接push即可。
所以Windows中也会存在同样的问题,此时我们也需要pull一下。
8.代码的修改
此时我们在Windows中将process文件中的test.c进行修改:
并也在Linux中的processbar文件中修改test.c代码:
并在Windows中提交:
此时我们在Linux中add + commit之后push,输入密码之后发现报错,此时pull一下(一定要先add + commit),并打开test.c文件发现我们要手动修改:
修改完成之后,再次add + commit + push,最后在Windows中pull一下即可,之后观察代码:
Linux和Windows同时使用会冲突,利用pull解决冲突。如果修改了同一个文件的.git不会覆盖,会把修改暴露出来,交由程序员解决。
9.Windows红点的问题
此时我们先来看一个问题,此时你又新建了一个文件并add,但是你给关掉了add的界面,此时你就无法上传该文件,要这样解决:
此时你想又把整个git_delete文件上传到远端仓库中,但是你会发现它发不现你的新文件,此时右击该文件(你可以看到上传成功的文件都有绿点,没有上传成功的是红点)。
总结:
git是一个非常优秀的发明,方便我们对项目进行版本控制,大家可以多去操作熟悉里面的命令,熟能生巧。至于git的其他操作,我们有多余时间可以进行学习,把最重要的几个命令和原理一定要掌握好。
相关文章:

git原理与上传
言: git是一个软件,gitee/github是一个网站,这里有什么联系吗?我们身为一个程序员不可能不知道github,但是毕竟这是外国的网站,我们不翻墙的情况下,是无法访问的(或者就是太慢了,或…...

LeetCode:633. 平方数之和(Java)
633. 平方数之和 题目描述: 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 b2 c 。 示例 1: 输入:c 5 输出:true 解释:1 * 1 2 * 2 5示例 2: 输入…...

linux查看端口状态的命令合集
linux查看端口状态的命令合集 直接使用 netstat 命令 如果你不需要超级用户权限,可以直接运行 netstat 命令: netstat -tuln 使用 ss 命令 ss 是一个更现代的工具,通常不需要超级用户权限就能查看端口信息。你可以尝试使用 ss 命令ÿ…...

幼儿园篮球游戏
题目描述: 幼儿园里有一个放倒的圆桶,它是一个 线性结构,允许在桶的右边将篮球放入,可以在桶的左边和右边将篮球取出。每个篮球有单独的编号,老师可以连续放入一个或多个篮球,小朋友可以在桶左边或右边将篮…...

Android编译环境构建(二)(可用于物理机、虚拟机、容器化Jenkins环境)
文章目录 需求环境要求文件下载Gradle Version:7.5cmdline-tools至此普通物理环境的Android编译环境已部署完毕 部署maven(可选)Jenkins配置Android构建环境 说明: 物理环境:物理机、虚拟机等 容器化环境:docker等 需求 Gradle Version:7.5 …...

Web服务器(实验)
目录 nginx实验1(快速建站)实验2(更换默认网页目录)实验3(内网穿透花生壳)实验4(综合nginx)实验5(基于不同IP的虚拟主机网站)实验6(基于不同端口号…...

【湖南-常德】《市级信息化建设项目初步设计方案编制规范和支出预算编制标准(试行)》-省市费用标准解读系列05
《市级信息化建设项目初步设计方案编制规范和支出预算编制标准(试行)》(常行审 〔2023〕7号)标准是湖南省常德市行政审批服务局、常德市财政局2023年12月29日发布的费用标准(了解更多可直接关注我们咨询)。…...

微信小程序 https://pcapi-xiaotuxian-front-devtest.itheima.net 不在以下 request 合法域名
微信小程序在调用接口的时候出现以上报错,接口没有问题,是因为小程序自动校验了合法域名 打开本地设置: 勾选不校验合法域名,即可 效果如下:...

vue什么时候渲染旧的VDOM,什么时候渲染新的VDOM
在 Vue 中,决定渲染旧的 VDOM 还是新的 VDOM 的关键在于组件的数据变化和 Vue 的响应式系统。一些常见的情况可以帮助理解这个过程: 1. 渲染新 VDOM 的情况 数据变化:当组件的响应式数据(如 data、props 或计算属性)发…...

【Qwen2技术报告分析】从模型架构 数据构建和模型评估出发
目录 前言 一、Tokenizer 二、模型结构 dense模型 MoE模型 模型参数设置 三、Pre-Training Pre-Training DATA LONG-CONTEXT TRAINING 四、Post-Training Post-Training DATA 人工数据注释(collaborative data annotation) 自动数据合成&a…...

Naive UI 选择器 Select 的:render-option怎么使用(Vue3 + TS)(鼠标悬停该条数据的时候展示全部内容)
项目场景: 在渲染select选择器后,当文字过长的时候,多出来的部分会显示成省略号,这使我们不能很清晰的看到该条数据的完整信息,就需要加一个鼠标悬停展示完整内容。 解决方案: vue代码: <n…...

使用Mac如何才能提高OCR与翻译的效率
OCR与截图大家都不陌生,或许有的朋友对于这两项功能用到的不多,但是如果经常会用到的话,那你就该看看了 iOCR,快捷键唤出翻译窗口,不论是截图翻译、划词翻译、输入翻译、剪切板翻译,统统快捷键完成&#x…...

QML----复制指定下标的ListModel数据
我现在有一个写好的listmodel,我需要从里边抽取35个数据作为展示 头文件 #ifndef GETONEPAGESIZEMEMBERLISTMODEL_H #define GETONEPAGESIZEMEMBERLISTMODEL_H#include <QObject> #include <QAbstractListModel> #include <QDebug> #include "mylistm…...

CSS Text(文本)
CSS Text(文本) CSS Text 是一种用于控制网页中文本显示样式的技术。通过使用 CSS Text 属性,开发者可以轻松地调整文本的字体、大小、颜色、对齐方式等,从而实现更加美观和个性化的网页设计。本文将详细介绍 CSS Text 的各种属性及其应用方法。 一、字体属性 1. font-fam…...

聊一聊Spring中的@Transactional注解【下】【注解失效场景】
前言 尽管 Transactional 注解在 Spring 中提供了方便的事务管理功能,我们在使用过程中却常常面临其失效的问题。事务失效可能导致意想不到的数据状态和错误,影响应用的稳定性和可靠性。本文将探讨一些常见的 Transactional 失效场景,包括异常…...

对称加密与非堆成加密
http通信有一些什么问题 窃听 - 对称加密传递密钥 - 非对称加密安全速度 - 非对称加密 对称加密中间人攻击 - 证书证书伪造 - 消息摘要摘要伪造 - 数字签名 可能被窃听 http本身不具备加密功能,http报文使用明文方式发送 还可能存在验证问题 无法确认发送到的…...

江协科技STM32学习- P28 USART串口数据包
🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝…...

Linux脚本循环(for、while、until)
文章目录 for基础风格for列表风格for与seq组合for与大括号for循环处理脚本参数组合命令while基础while数字累加utilcontinue for基础风格 这种风格最像高级程序中的for循环 #!/bin/bashfor(( i0; i<10; i )) doecho "第$i次for循环" donefor列表风格 #!/bin/ba…...

文件系统上云的挑战
优质博文:IT-BLOG-CN 一、挑战/注意事项 【1】因文件系统HDFS没有关联信息OrderId等,不能对存量数据进行有策略的同步,因此目前是将所有的文件同步至云服务器SIN; 【2】海外数据和国内数据上传到各自的文件服务器后,…...

【北京迅为】《STM32MP157开发板嵌入式开发指南》-第七十一章 制作Ubuntu文件系统
iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…...

中间件漏洞总结
参考:Tomcat漏洞详解-CSDN博客 tomcat 历史漏洞 阿里云漏洞库 (aliyun.com) 弱口令和war远程部署漏洞 弱口令 Tomcat8.* 登录页面:/manager/html 弱口令:tomcat/tomcat 后台Getshell 登录到后台后可以通过部署 war 包进行 getshell wa…...

PySpark Yarn集群模式
目录 简介 一、PySpark简介 二、YARN模式概述 三、配置环境 1. 安装与配置Spark 2. 配置Hadoop和YARN 3. 启动yarn 四、编写PySpark脚本 五、提交PySpark作业到YARN 参数解释: 六、常见问题及解决 七、总结 简介 随着大数据的普及,Spark作为…...

Matlab基于经纬度点并行提取指定日期的tiff栅格位置的值
文章目录 前言一、基本说明二、代码 前言 该 MATLAB 代码用于从 GeoTIFF 文件中提取基于特定地理位置(经纬度)和日期的某个点的相关数据。代码首先读取一个包含事件数据(日期、经纬度)的 Excel 文件,然后根据日期和位…...

npm入门教程19:npm包管理
一、代码更新 遵循语义化版本控制: 在更新包时,应遵循语义化版本控制(Semantic Versioning,简称SemVer)规范。这意味着版本号的变更应反映代码变更的程度,通常遵循主版本号.次版本号.修订号的格式。主版本号…...

【NOIP提高组】虫食算
【NOIP提高组】虫食算 C语言C 💐The Begin💐点点关注,收藏不迷路💐 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子: 43#98…...

软件测试面试题个人总结
前面看到了一些面试题,总感觉会用得到,但是看一遍又记不住,所以我把面试题都整合在一起,都是来自各路大佬的分享,为了方便以后自己需要的时候刷一刷,不用再到处找题,今天把自己整理的这些面试题…...

HTML 语法规范——代码注释、缩进与格式、标签与属性、字符编码等
文章目录 一、代码注释1.1 使用注释的主要目的1.2 使用建议二、标签的使用2.1 开始标签和结束标签2.2 自闭合标签2.3 标签的嵌套2.4 标签的有效性三、属性四、缩进与格式4.1 一致的缩进4.2 元素单独占用一行4.3 嵌套元素的缩进4.4 避免冗长的行五、字符编码六、小结在开发 HTML…...

【Wi-Fi】WiFi中QAM及16-QAM、64-QAM、512-QAM、1024-QAM、2048-QAM、4096-QAM整理
参考链接 什么是QAM?QAM是如何工作的? - 华为 不同阶QAM调制星座图中,符号能量的归一化计算原理 - 知乎 16 QAM modulation vs 64 QAM modulation vs 256 QAM modulation 512 QAM vs 1024 QAM vs 2048 QAM vs 4096 QAM modulation type…...

红黑树的平衡之舞:数据结构中的优雅艺术
文章目录 前言🚀一、红黑树的介绍1.1 红黑树的概念1.2 红黑树的特点1.3 红黑树的性质 🚀二、红黑树结点的定义🚀三、红黑树的框架🚀四、旋转操作🚀五、红黑树的插入操作5.1 uncle结点存在且为红5.2 uncle结点不存在或者…...

angular实现list列表和翻页效果
说明:angular实现list列表和翻页效果 上一页 当前页面 下一页 效果图: step1: E:\projectgood\ajnine\untitled4\src\app\car\car.component.css .example-form-fields {display: flex;align-items: flex-start; }mat-list-item{background: antiquew…...