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

Git GitHub基础

git是什么?

Git是一个分布式版本控制系统,用于管理源代码的变更。它允许多个开发者在同一个项目上协作,同时跟踪每个修改的历史记录。

关键词:

  1. 分布式
  2. 版本控制
  3. 软件

软件

安装到我们电脑上的一个工具

版本控制

例如论文,论文不断修改,有论文1.0,论文2.0,论文3.0,论文最终版本,对我们的论文版本进行管理,版本控制的发展历程如下:

1. 早期阶段(1960s-1970s)
  • 源代码管理的萌芽:在1960年代,随着计算机程序的复杂性增加,开发人员开始寻找管理和跟踪代码变更的工具。最早的版本控制系统是在大型机环境中手动管理的,通常通过备份、文件命名约定和文档来完成。
2. 控制系统的出现(1970s-1980s)
  • RCS与SCCS:1970年代,BSD(伯克利软件分发版)引入了SCCS(Source Code Control System),这是第一个自动管理源代码版本的软件系统。RCS(Revision Control System)随后出现,为版本控制提供了一种更为简洁有效的方法。
3. 传统集中式版本控制(1980s-2000s)
  • CVS和Subversion:在1990年代,CVS(Concurrent Versions System)成为最普遍使用的版本控制系统。它允许多个开发者并行协作,并具有冲突解决机制。随后,Subversion(SVN)在2000年推出,解决了CVS的一些缺陷,如缺乏对二进制文件和目录版本控制的支持。
4. 分布式版本控制的兴起(2000s-现在)
  • Git的出现:2005年,Linus Torvalds开发了Git,标志着分布式版本控制的新时代。Git允许每位开发者都拥有完整的代码库副本,从而极大地提高了协作效率和灵活性。
  • Mercurial:与Git同年推出的Mercurial也是一款流行的分布式版本控制工具,但其设计上更加注重简洁和易用。
5. 社区和平台的繁荣(2010s-现在)
  • GitHub和GitLab的发展:随着Git的流行,GitHub(2008年)和GitLab等平台兴起,使开源项目和团队协作更加便捷。它们提供了图形化界面和集成的代码审查、问题跟踪和持续集成等功能。

为什么要做版本控制?

  1. 历史记录和追踪更改:版本控制系统(如 Git)能够记录每一次更改,可以轻松查看和恢复到以前的版本。这对于 bug 修复和回退到稳定版本非常有帮助。

  2. 协作:在团队环境中,版本控制允许多个开发者并行工作而不会互相干扰。它可以合并不同的代码更改,确保每个人的工作都能被记录和整合。

  3. 分支和合并:可以创建分支来开发新功能或修复问题,然后在完成后将其合并到主代码库。这使得实验和开发新特性变得更安全。

  4. 提高代码质量:通过版本控制,团队可以在合并代码之前进行代码审核,确保代码的质量和一致性。

  5. 文档化过程:版本控制系统会记录谁何时做了什么更改,提供了良好的文档化,使得项目管理和审计变得容易。

  6. 解决冲突:当多个开发者同时修改同一部分代码时,版本控制可以帮助识别和解决冲突,确保最终代码的完整性。

  7. 环境管理:版本控制可以帮助管理不同的开发和生产环境,确保源代码和配置的一致性。

git安装

这里我就不演示了,下面的链接有详细讲解了如何安装以及环境的配置

git安装及环境配置

版本控制的操作顺序

  1. 进入要管理的文件夹

    选择我们要进入的git_learn文件

    然后管理aa.py文件
  2. 初始化(提名,让别人知道你就是老大)
    git init#进行git的初始化

    git status#检测当前文件夹下的状态
  3. 管理
    git add aa.py#执行这一段代码就是让git管谁


    能够发现,git add 文件后,该文件变成了绿色

    git add .#会将该目录下的所有未被管理的文件,都进行管理

  4. 生成版本
    git commit -m '生成第一个版本v1'


    此时git已经将当前版本的文件生成一个版本了。

如果我在上一个版本上修改了我的aa.py文件

这个时候aa.py文件在上一个版本中,进行了修改,接下来还是将修改的文件加入管理,并且生成版本

git add .
git commit -m 'v2'


如何查看生成的记录呢

git log

个人信息配置:用户名、邮箱[配置一次即可]

git config --global user.email "邮箱"
git config --global user.name "Your Name"

git工作流程

我的评价!!!直接看  东北热

如何回滚

git reset --hard 输入要回滚的序列号

如果想回到以前做过的一些版本可以使用

git reflog #查询回滚以前的功能

这里就可以看到回滚以前的版本,再用git reset --hard 输入要回到的版本

代码总结

git init #初始化,即让git帮我们管理当前文件夹
git status #检测当前目录下文件的状态
#三种状态(颜色)的变化
1.红色:新增的文件/修改了原来老文件  -》git add 文件名 .
2.绿色:git已经管理起来了 -》git commit -m '描述信息'
3.生成版本
git log 查看版本记录
git reflog
git reset --hard 版本号

三大区域

分支

初始分支

开发不同的功能,然后将不同的功能合并到一起。

基于分支修复线上bug的具体过程

主路线就是master

分支实例

先开发a1功能

git init初始化

git status # 查看状态

git add .#将未更新的版本加入更新

接下来开发a2功能

git log #查看版本记录

接下来上线商城功能

接下来创建短视频的功能

创建分支

理想分支如下,可以记下来

创建dev分路

git branch #查看分路
git branch "名字" #创建名为的分路

git checkout ""#要切换的分路名

在dev分支上开发短视频功能,完成50%时出现了bug

然后出现bug,返回master分支,创建bug分支

此时的代码回到了a3,然后进入bug分支

接下来,修理商城代码的bug

接下来将bug的代码和master的代码进行合并

git merge "分支"#合并你的分支
git branch -d "选择你要删除的分支"

先返回master分支

合并完成后删除bug分支

接下来前往短视频系统继续开发

最后将短视频功能合并到master

出现上述代码就是要调整代码,处理业务冲突

先对修改好的代码进行上线,再删除dev分支

工作流

做开发至少要有两个分支

一个是master分支

一个是dev分支,所有的开发都在dev分支上进行

github

基于github做代码托管

创建新的仓库

如何上传代码,以及如何克隆代码

git remote add origin 远程仓库地址  #给远程仓库起别名
git push -u origin 分支  #向远程推送代码
git clone 远程仓库地址  #克隆远程仓库代码(内部已经实现了起别名)
git checkout 分支  #切换分支

相关文章:

Git GitHub基础

git是什么? Git是一个分布式版本控制系统,用于管理源代码的变更。它允许多个开发者在同一个项目上协作,同时跟踪每个修改的历史记录。 关键词: 分布式版本控制软件 软件 安装到我们电脑上的一个工具 版本控制 例如论文&…...

多平台文章同步工具PostSync 安装介绍

PostSync 是一个开源的用于多平台文章同步的工具 环境安装 安装 Python:PostSync 是基于 Python 开发的,你需要确保系统中已经安装了 Python 环境,建议使用 Python 3.7 及以上版本。你可以从 Python 官方网站 下载并安装适合你操作系统的版…...

PXE批量网络装机与Kickstart自动化安装工具

目录 一、系统装机的原理 1.1、系统装机方式 1.2、系统安装过程 二、PXE批量网络装机 2.1、PXE实现原理 2.2、搭建PXE实际案例 2.2.1、安装必要软件 2.2.2、搭建DHCP服务器 2.2.3、搭建TFTP服务器 2.2.4、挂载镜像并拷贝引导文件到tftp服务启动引导文件夹下 2.2.5、编…...

css的复合选择器

1.1什么是复合选择器 在css中,选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基本选择器进行组合形成。 复合选择器可以更准确、更高效的选择目标元素(标签)由两个或多个基础选择器,通过不同的方式组合…...

Wireshark Lua 插件教程

本⽂主要介绍 Lua 脚本在 Wireshark 中的应⽤, Lua 脚本可以在 Wireshark 中完成如下功能: 从⽹络包中提取数据, 或者统计⼀些数据包(Dumper) 需要解析⼀种 Wireshark 不提供原⽣⽀持的协议(Dissector) ⽰例 协议解析 VREP 协议是 NOGD 框架对于 TRIP 协议的⼀种延伸和扩展…...

mysql怎样优化where like ‘%字符串%‘这种模糊匹配的慢sql

一 问题描述 工作中经常遇到这种模糊匹配的慢sql: select * from 表名 where 字段 like %字符串%; 由于前面有%,导致无法走该字段上的索引。 二 解决办法 ① 给该字段创建一个全文索引 CREATE FULLTEXT INDEX 索引名 ON 表名 (字段名); ② 改写sq…...

Python代码片段-断点任务

使用Python处理一堆长耗时任务的时候,为了防止异常退出程序或者手动退出程序后丢失任务进度,可用使用断点的方式记录任务进度,下次重载任务后,继续运行上次未完成的任务即可。 这里用json文件作为数据持久化的方式,免…...

mapbox基础,使用geojson加载heatmap热力图层

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️heatmap热力图层样式二、🍀使用geojs…...

03.检测 Zabbix agent

TOC 利用 zabbix_get 工具测试 Zabbix Agent 是否正常 # 安装 zabbix-get [rootUbuntu2204 ~]#apt install -y zabbix-get# 使用zabbix_get 工具查看验证 agent 是否正常 返回1表示正常 [rootUbuntu2204 ~]#zabbix_get -s 10.0.0.110 -p 10050 -k "agent.ping"故障…...

Vue 3 + Vite 项目配置访问地址到服务器某个文件夹的解决方案

前言 在开发 Vue 3 Vite 项目时,我们经常需要将项目部署到服务器的某个特定文件夹下。例如,将项目部署到 /my-folder/ 目录下,而不是服务器的根目录。这时,我们需要对 Vite 和 Vue Router 进行一些配置,以确保项目能…...

JavaScript将:;隔开的字符串转换为json格式。使用正则表达式匹配键值对,并构建对象。多用于解析cssText为style Object对象

// 使用正则表达式匹配键值对,并构建对象 let string2Json(s)>{const r {};s.replace(/;/g, ;).replace(/\;/g, \n).replace(/:/g, :).replace(/\n/g, \n)//合并多个换行符.split(\n).forEach(item > {const [k, v] item.split(:);(k…...

MT-Metrics

MT-Metrics 是一类用于评估生成文本质量的指标,最初用于机器翻译任务,后来扩展到生成任务(如对话生成、文本摘要等)。它的核心思想是通过比较生成文本与参考文本之间的相似性(如词汇重叠、句法结构、语义相似性&#x…...

【数据结构第十六节】实现链式结构二叉树(详细递归图解—呕心沥血版!)

必须有为成功付出代价的决心,然后想办法付出这个代价。云边有个稻草人-CSDN博客 这节课挺抽象(苦笑),没事,我会帮你!干就完了! (目录在路上) 正文开始—— 引言 用链表…...

【Python爬虫(100)】从当下到未来:Python爬虫技术的进阶之路

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发…...

Vue-Flow绘制流程图(Vue3+ElementPlus+TS)简单案例

本文是vue3Elementplusts框架编写的简单可拖拽绘制案例。 1.效果图&#xff1a; 2.Index.vue主代码&#xff1a; <script lang"ts" setup> import { ref, markRaw } from "vue"; import {VueFlow,useVueFlow,MarkerType,type Node,type Edge } fro…...

CNN:卷积网络中设计1×1夹在主要卷积核如3×3前后的作用

话不多说直接上图举例&#xff1a; 像在 ResNet 的 Bottleneck 结构 中&#xff0c;1x1 卷积 被放置在 3x3 卷积 的前后&#xff0c;这种设计有以下几个关键作用和优势&#xff1a; 1. 降低计算复杂度 问题&#xff1a;直接使用 3x3 卷积计算量较大&#xff0c;尤其是当输入和…...

esp8266 rtos sdk开发环境搭建

1. 安装必要的工具 1.1 安装 Git Git 用于从远程仓库克隆代码&#xff0c;你可以从Git 官方网站下载 Windows 版本的安装程序。安装过程中可保持默认设置&#xff0c;安装完成后&#xff0c;在命令提示符&#xff08;CMD&#xff09;或 PowerShell 中输入git --version&#…...

【深度学习】矩阵的核心问题解析

一、基础问题 1. 如何实现两个矩阵的乘法&#xff1f; 问题描述&#xff1a;给定两个矩阵 A A A和 B B B&#xff0c;编写代码实现矩阵乘法。 解法&#xff1a; 使用三重循环实现标准矩阵乘法。 或者使用 NumPy 的 dot 方法进行高效计算。 def matrix_multiply(A, B):m, n …...

DeepSeek模型昇腾部署优秀实践

2024年12月26日&#xff0c;DeepSeek-V3横空出世&#xff0c;以其卓越性能备受瞩目。该模型发布即支持昇腾&#xff0c;用户可在昇腾硬件和MindIE推理引擎上实现高效推理&#xff0c;但在实际操作中&#xff0c;部署流程与常见问题困扰着不少开发者。本文将为你详细阐述昇腾 De…...

从 Spring Boot 2 升级到 Spring Boot 3 的终极指南

一、升级前的核心准备 1. JDK 版本升级 Spring Boot 3 强制要求 Java 17 及以上版本。若当前项目使用 Java 8 或 11&#xff0c;需按以下步骤操作&#xff1a; 安装 JDK 17&#xff1a;从 Oracle 或 OpenJDK 官网下载&#xff0c;配置环境变量&#xff08;如 JAVA_HOME&…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...