Git GitHub基础

news2025/7/17 5:45:48

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.coloradmin.cn/o/2308084.html

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

相关文章

【Excel】 Power Query抓取多页数据导入到Excel

抓取多页数据想必大多数人都会,只要会点编程技项的人都不会是难事儿。那么,如果只是单纯的利用Excel软件,我还真的没弄过。昨天,我就因为这个在网上找了好久发好久。 1、在数据-》新建查询-》从其他源-》自网站 ,如图 …

视频批量分段工具

参考原文:视频批量分段工具 选择视频文件 当您启动这款视频批量分段工具程序后,有两种便捷的方式来选择要处理的视频文件。其一,您可以点击程序界面中的 “文件” 菜单,在下拉选项里找到 “选择视频文件” 按钮并点击&#xff1b…

多通道数据采集和信号生成的模块化仪器如何重构飞机电子可靠性测试体系?

飞机的核心电子系统包括发电与配电系统,飞机内部所有设备和系统之间的内部数据通信系统,以及用于外部通信的射频设备。其他所有航空电子元件都依赖这些关键总线进行电力传输或数据通信。在本文中,我们将了解模块化仪器(无论是PCIe…

面试(进阶) —虚拟列表在什么场景使用,如何实现?

面试(进阶) —虚拟列表在什么场景使用,如何实现? 在前端开发中,当需要渲染大量数据时,传统的渲染方式往往会遇到性能瓶颈。一次性将大量数据渲染到DOM中,不仅会导致页面加载缓慢,还可能占用大量内存&#x…

Python—Excel全字段转json文件(极速版+GUI界面打包)

目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码(简易版)5、进阶版(GUI)总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——…

【Linux第一弹】Linux基础指令(上)

目录 1.ls指令 1.1 ls使用实例 2.pwd指令 3.cd指令 3.1 cd使用实例 4.touch指令 4.1touch使用实例 5.mkdir指令 5.1mkdir使用实例 6.rmdir指令和rm指令 6.1 rmdir指令使用实例->: 6.2 rm指令使用实例 7.man指令 8.cp指令 8.1 cp 使用实例 9.mv指令 9.1mv使用…

Netty为什么性能很高?

大家好,我是锋哥。今天分享关于【Netty为什么性能很高?】面试题。希望对大家有帮助; Netty为什么性能很高? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty是一款高性能的网络通信框架,主要用于构建高性能的网络应用程序。…

[深度学习] 大模型学习2-提示词工程指北

在文章大语言模型基础知识里,提示词工程(Prompt Engineering)作为大语言模型(Large Language Model,LLM)应用构建的一种方式被简要提及,本文将着重对该技术进行介绍。 提示词工程就是在和LLM聊…

基于POI的Excel下拉框自动搜索,包括数据验证的单列删除

目录 目标 例子 1.搜索下拉框页 2.数据源页 3.效果 代码以及注意事项 1.代码 2.注意事项 1.基于Excel的话,相当于加入了一个【数据验证】 2.代码中的一些方法说明 目标 期望在Excel利用代码创建具备自动搜索功能的下拉框 例子 1.搜索下拉框页 2.数据源…

Python 数据可视化(一)熟悉Matplotlib

目录 一、安装包 二、先画个折线图 1、修改标签文字和线条粗细 2、内置样式 3、scatter() 绘制散点图 4、scatter() 绘制多个点 5、设置样式 6、保存绘图 数据可视化指的是通过可视化表示来探索和呈现数据集内的规律。 一、安装包 win R 打开终端 安装 Matplotlib&…

考研出分24小时,人类精神状态图鉴

2月24日,上午10点起,各省考研初试成绩陆续公布,考生们或紧张的输入准考证号,或抱团等待“审判”。然而更魔幻的还在后头——下午4点,教育部竟在同一天直接发布了《2025年研考国家分数线》。 不少网友表示:…

神经网络AI原理回顾

长期记忆存储在大模型的参数权重中,不经过推理和编码无法读取,且必须依赖输入的提示,因为大模型不会无缘无故的自言自语,毕竟输入层是它唯一 与外界交互的窗口。 目前个性化大模型的局限就是训练成本过高,除非使用RAG&…

数据库导出

MySQL数据库 使用命令行导出 导出整个数据库:在命令行中输入mysqldump -u用户名 -p密码 数据库名 > 导出文件路径/文件名.sql。例如mysqldump -uroot -p123456 mydb > /home/user/mydb_backup.sql,回车后输入密码即可将名为mydb的数据库导出为SQL…

进程间通信 —— 共享内存

目录 1.共享内存实现通信的原理 2.如何使用共享内存实现通信 共享内存通信接口介绍 shmget shmat shmdt shmctl 使用示例 key和shmid 3.共享内存通信的优缺点 缺点:不提供任何同步机制,可能会造成数据混乱。 优点:共享内存是进程…

本地搭建dify结合ollama+deepseek方法详解

1.安装ollama,安装deepseek-r1:8b模型 2.安装dify社区版 访问Dify GitHub项目地址 git clone https://github.com/langgenius/dify.git cd dify/docker cp .env.example .env docker compose up -d docker compose ps 查重以下实例是否启动成功: 更新Dif…

Linux系统软件管理

systemctl 控制软件启动和关闭 Linux系统很多软件支持使用systemctl命令控制:启动,停止,开启自启。 能被systemctl管理的软件,一般被称为:服务。 语法:systemctl start|stop|status|enable|disable 服务名…

在Linux桌面上创建Idea启动快捷方式

1、在桌面新建idea.desktop vim idea.desktop [Desktop Entry] EncodingUTF-8 NameIntelliJ IDEA CommentIntelliJ IDEA Exec/home/software/idea-2021/bin/idea.sh Icon/home/software/idea-2021/bin/idea.svg Terminalfalse TypeApplication CategoriesApplication;Developm…

从0开始的操作系统手搓教程19:构建我们的内存管理——第二步:内存子系统进化,获取页!

目录 讨论页表的分析和索引的完成 完成一个宽泛的页获取 从指定的内存池中分配若干页 获取准备用来提供给客户端方向的虚拟地址起始位置 根据内存池的选择,完成对物理内存的获取 关联我们的物理内存和虚拟内存 编写尝试 运行的截图 现在,我们将会…

数学软件Matlab下载|支持Win+Mac网盘资源分享

如大家所了解的,Matlab与Maple、Mathematica并称为三大数学软件。Matlab应用广泛,常被用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 Matlab将数值分析、矩阵计算、科学…

FASIONAD:自适应反馈的类人自动驾驶中快速和慢速思维融合系统

24年11月来自清华、早稻田大学、明尼苏达大学、多伦多大学、厦门大学马来西亚分校、电子科大(成都)、智平方科技和河南润泰数字科技的论文“FASIONAD : FAst and Slow FusION Thinking Systems for Human-Like Autonomous Driving with Adaptive Feedbac…