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 分支  #切换分支

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

派可数据BI接入DeepSeek,开启智能数据分析新纪元

派可数据BI产品完成接入DeepSeek,此次接入标志着派可数据BI在智能数据分析领域迈出了重要一步,将为用户带来更智能、更高效、更便捷的数据分析体验。 派可数据BI作为国内领先的商业智能解决方案提供商,一直致力于为用户提供高效、稳定易扩展…

Linux-ftrace-双nop机制的实现

Linux 内核调试工具ftrace 之(NOP动态插桩的实现原理) ftrace 是 Linux 内核中的一种跟踪工具,主要用于性能分析、调试和内核代码的执行跟踪。它通过在内核代码的关键点插入探针(probe)来记录函数调用和执行信息。这对…

Qt互斥锁(QMutex)的使用、QMutexLocker的使用

Qt互斥锁【QMutex】的使用、QMutexLocker的使用 基于读写锁(QReadWriteLock)的线程同步Chapter1 Qt互斥锁(QMutex)的使用、QMutexLocker的使用一、QMutexLocker和QMutex实现示例图二、QMutex和QMutexLocker的关系(个人理解)三、QMutex使用和QMutexLocker…

【无标题】Ubuntu22.04编译视觉十四讲slambook2 ch4时fmt库的报错

Ubuntu22.04编译视觉十四讲slambook2 ch4时fmt库的报错 cmake ..顺利&#xff0c;make后出现如下报错&#xff1a; in function std::make_unsigned<int>::type fmt::v8::detail::to_unsigned<int>(int): trajectoryError.cpp:(.text._ZN3fmt2v86detail11to_unsi…

SpringBoot ——简单开发流程实战

本文使用SpringBoot进行电商系统商品数据增删改查的简单开发流程。 本文目录 一、创建Spring Boot项目二、配置数据库连接三、创建实体类四、创建Repository接口五、创建Service层六、创建Controller层七、测试 一、创建Spring Boot项目 可以通过https://start.spring.io/或者…

fastadmin 后台商品sku(vue)

先上个效果图 首先先引入vue define([backend], function (Backend) {require.config({paths: {vue: /assets/jeekshopskugoods/libs/vue.min,skuimg: /assets/jeekshopskugoods/js/skuimg,skugoods: /assets/jeekshopskugoods/js/skugoods,layui: /assets/LayuiSpzj/layui/la…

LeetCode 718 - 最长重复子数组

LeetCode 718 - 最长重复子数组 是一个典型的数组和字符串问题&#xff0c;适合考察动态规划、滑动窗口和二分查找等多种编程能力。掌握其多种解法及变体能够有效提高处理字符串和数组算法的能力。 题目描述 输入: 两个整数数组 nums1 和 nums2。输出: 两个数组中存在的最长的…

LeetCode 0132.分割回文串 II:动态规划

【LetMeFly】132.分割回文串 II&#xff1a;动态规划 力扣题目链接&#xff1a;https://leetcode.cn/problems/palindrome-partitioning-ii/ 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是回文串。 返回符合要求的 最少分割次数 。 示例 …

iOS 实现UIButton自动化点击埋点

思路&#xff1a;我们HOOK UIControl的 addtarget:action:forControlEvents方法&#xff0c;交换UIControl的 addtarget:action:forControlEvents 方法的实现&#xff0c; 在交换的方法中添加原来响应的同时&#xff0c;再添加一个埋点响应&#xff0c;该响应方法实现了点击埋点…

C++蓝桥杯基础篇(六)

片头 嗨~小伙伴们&#xff0c;大家好&#xff01;今天我们来一起学习蓝桥杯基础篇&#xff08;六&#xff09;&#xff0c;练习相关的数组习题&#xff0c;准备好了吗&#xff1f;咱们开始咯&#xff01; 第1题 数组的左方区域 这道题&#xff0c;实质上是找规律&#xff0c;…

git -学习笔记

目录 基本操作语法 设置用户和邮箱 版本回退 工作区和暂存区 撤销修改 删除与恢复 一工作区删除了&#xff0c;但是暂存区没删除 二工作区误删了&#xff0c;暂存区还有 github-Git 连接 报错解决-push远程仓库被拒绝 远程库 分支 分支冲突 储藏分支 回到当前分…

Windows本地Docker+Open-WebUI部署DeepSeek

最近想在自己的电脑本地部署一下DeepSeek试试&#xff0c;由于不希望污染电脑的Windows环境&#xff0c;所以在wsl中安装了ollama&#xff0c;使用ollama拉取DeepSeek模型。然后在Windows中安装了Docker Desktop&#xff0c;在Docker中部署了Open-WebUI&#xff0c;最后再在Ope…

力扣785. 判断二分图

力扣785. 判断二分图 题目 题目解析及思路 题目要求将所有节点分成两部分&#xff0c;每条边的两个端点都必须在不同集合中 二分图&#xff1a;BFS/DFS/并查集 因为图不一定联通&#xff0c;所以枚举所有点都做bfs(如果没联通的话) 代码 class Solution { public:bool is…

springboot之集成Elasticsearch

目录 二、Elasticsearch 是什么&#xff1f;三、Elasticsearch 安装四、Springboot 集成 Elasticsearch 的方式五、创建项目集成 Elasticsearch 2.创建 Spring Initializr 项目 es &#xff08;3&#xff09;.新建实体类 User&#xff08;4&#xff09;.新建 dao 接口类 UserR…

[Lc滑动窗口_1] 长度最小的数组 | 无重复字符的最长子串 | 最大连续1的个数 III | 将 x 减到 0 的最小操作数

目录 1. 长度最小的字数组 题解 代码 ⭕2.无重复字符的最长子串 题解 代码 3.最大连续1的个数 III 题解 代码 4.将 x 减到 0 的最小操作数 题解 代码 1. 长度最小的字数组 题目链接&#xff1a;209.长度最小的字数组 题目分析: 给定一个含有 n 个 正整数 的数组…

数据集笔记:新加坡 地铁(MRT)和轻轨(LRT)票价

数据连接 data.gov.sg 2024 年 12 月 28 日起生效的新加坡地铁票价 该数据集包含 MRT 和 LRT 票价的信息&#xff0c;包括&#xff1a; 票价类型&#xff08;Fare Type&#xff09;&#xff1a;成人票、学生票、老年人票、残障人士票等。适用时间&#xff08;Applicable Tim…

湘潭大学计算机复试详细攻略(调剂)

一&#xff0c;写在前面的话 ① 首先&#xff0c;能完成考试初试来到这里的都是勇士。不管结果如何&#xff0c;不管成绩如何。我都在这里真心的祝福你以后一帆风顺。 ② 目前学历贬值严重&#xff0c;如果是成绩不理想的话&#xff0c;我建议能工作就去工作&#xff0c;工作不…

【前端基础】Day 3 CSS-2

目录 1. Emmet语法 1.1 快速生成HTML结构语法 1.2 快速生成CSS样式语法 2. CSS的复合选择器 2.1 后代选择器 2.2 子选择器 2.3 并集选择器 2.4 伪类选择器 2.4.1 链接伪类选择器 2.4.2 focus伪类选择器 2.5 复合选择器总结 3. CSS的元素显示模式 3.1 什么是元素显示…

不同数据类型在数据库和编程语言之间的对应关系表

不同数据类型在数据库和编程语言之间的对应关系表 MySql 与 C# MySqlC#varcharstringbigintlongbigint unsignedulongintintint unsigneduintsmallintshortsmallint unsignedushortVARCHAR(36)GuidsmalldatetimeDateTimedateDateTimedatetimeDateTimetimestampDateTimefloatf…

RabbitMQ操作实战

1.RabbitMQ安装 RabbitMQ Windows 安装、配置、使用 - 小白教程-腾讯云开发者社区-腾讯云下载erlang&#xff1a;http://www.erlang.org/downloads/https://cloud.tencent.com/developer/article/2192340 Windows 10安装RabbitMQ及延时消息插件rabbitmq_delayed_message_exch…