Github项目管理——仓库概述(一)

 个人名片:

🎓作者简介:嵌入式领域优质创作者
🌐个人主页:妄北y

📞个人QQ:2061314755

💌个人邮箱:[mailto:2061314755@qq.com]
📱个人微信:Vir2025WBY
🖋️本文为妄北y原创佳作,独家首发于CSDN🎊🎊🎊
💡座右铭:改造世界固然伟大,但改造自我更为可贵。

专栏导航:

妄北y系列专栏导航:

物联网嵌入式开发项目:大学期间的毕业设计,课程设计,大创项目,各种竞赛项目,全面覆盖了需求分析、方案设计、实施与调试、成果展示以及总结反思等关键环节。📚💼💡

QT基础入门学习:对QT的基础图形化页面设计进行了一个简单的学习与认识,利用QT的基础知识进行了翻金币小游戏的制作。🛠️🔧💭

Linux基础编程:初步认识什么是Linux,为什么学Linux,安装环境,进行基础命令的学习,入门级的shell编程。🍻🎉🖥️

Linux应用开发基础开发:分享Linux的基本概念、命令行操作、文件系统、用户和权限管理等,网络编程相关知识,TCP/IP 协议、套接字(Socket)编程等,可以实现网络通信功能。💐📝💡

Linux驱动开发:Linux驱动开发是Linux系统不可或缺的组成部分,它专注于编写特殊的程序——驱动程序。这些程序承载着硬件设备的详细信息,并扮演着操作系统与硬件间沟通的桥梁角色。驱动开发的核心使命在于确保硬件设备在Linux系统上顺畅运作,同时实现与操作系统的无缝集成,为用户带来流畅稳定的体验。🚀🔧💻

Linux项目开发:Linux基础知识的实践,做项目是最锻炼能力的一个学习方法,这里我们会学习到一些简单基础的项目开发与应用,而且都是毕业设计级别的哦。🤸🌱🚀

非常期待与您一同在这个广阔的互联网天地里,携手探索知识的海洋,互相学习,共同进步。🌐💫🌱 熠熠星光,照亮我们的成长之路

✨✨ 欢迎订阅本专栏,对专栏内容任何问题都可以随时联系博主,共同书写属于我们的精彩篇章!✨✨

文章介绍:

📚本篇文章将深入剖析Github项目管理学习的精髓与奥秘,与您一同分享相关知识!🎉🎉🎉

若您觉得文章尚可入目,期待您能慷慨地送上点赞、收藏与分享的三连支持!您的每一份鼓励,都是我创作路上源源不断的动力。让我们携手并进,共同奔跑,期待在顶峰相见的那一天,共庆辉煌!🚀🚀🚀

🙏衷心感谢大家的点赞👍、收藏⭐和评论✍️,您的支持是我前进的动力!

目录:

目录:

一、版本控制:

1.1 本地版本控制系统:

1.2 集中化的版本控制系统(Centralized Version Control Systems, CVCS):

1.3 分布式版本控制系统(Distributed Version Control Systems, DVCS):

二、GIT介绍

2.1 GIT 历史

 2.2 GIT特点

2.3 工作目录,暂存区,和本地仓库三者之间关系

 ​编辑 

三、GIT的安装与配置

3.1 安装GIT

3.2 查看GIT是否安装

3.3 配置GIT

3.4 初始化GIT仓库


一、版本控制:

        版本控制是一种系统,用于管理文件(尤其是代码文件)的更改历史,以便你能够回顾特定版本的文件。它对于任何进行文本文件更改的人来说都是非常重要的工具,尤其是对于软件开发者来说。

        版本控制是软件开发和文档管理中的一个关键概念,它涉及到跟踪和管理文件的变更历史。以下是版本控制系统的三种主要类型:

1.1 本地版本控制系统:

        这种系统通常采用简单的数据库来记录文件的所有变更。例如,RCS(Revision Control System)就是一种本地版本控制系统,它通过在硬盘上保存补丁集(即文件修订前后的差异)来工作。

1.2 集中化的版本控制系统(Centralized Version Control Systems, CVCS):

        这类系统如CVS(Concurrent Versions System)、Subversion(SVN)和Perforce,它们有一个单一的集中服务器来存储所有文件的版本,而多个客户端则从这个中心仓库检出文件。这种模式提供了更好的项目监控和控制,但缺点是如果中央服务器出现故障,则无法进行历史版本访问和协作。

1.3 分布式版本控制系统(Distributed Version Control Systems, DVCS):

        在这类系统中,如Git、Mercurial和Bazaar,每个参与者不仅从中央仓库检出文件,还会完整地复制一份仓库。这意味着即使没有网络连接,你也可以在本地进行提交、查看历史记录和创建分支等操作。当重新联网后,你可以将本地仓库的变更推送到远程仓库。这种分布式特性极大地提高了系统的容错性和灵活性。

版本控制系统的主要功能包括:

跟踪变更:记录谁、何时以及为什么对文件进行了更改。

版本历史:允许用户查看文件的旧版本,并比较不同版本之间的差异。

分支和合并:允许开发者创建独立的开发路径(分支),并在完成后将这些更改合并回主分支。

协作:允许多个开发者同时工作在同一个项目上,而不会相互干扰。

恢复:如果需要,可以将文件或整个项目恢复到之前的某个状态。

        版本控制系统是现代软件开发不可或缺的工具,它不仅提高了开发效率,还确保了代码质量和团队协作的顺畅。

二、GIT介绍

2.1 GIT 历史

1991 - 2002年:早期版本控制

  • Linux 内核项目最初使用的是一种非正式的版本控制方法,主要是通过 tarball 和 patches 的方式进行代码分发和合并。

2002 - 2005年:BitKeeper 的使用

  • 为了更有效地管理 Linux 内核的开发,Linux 社区开始使用 BitKeeper,这是一个分布式版本控制系统,它允许开发者们更高效地协作。

2005年:BitKeeper 的争议与 Git 的诞生

  • 2005年,由于一系列争议,BitKeeper 的免费使用权被收回。这促使 Linux 社区,尤其是 Linus Torvalds(Linux 的创始人)开始寻找或创建一个新的版本控制系统。
  • Linus Torvalds 决定自己开发一个新的版本控制系统,以满足 Linux 社区的需求。他在一周内设计了 Git 的原型,并在接下来的几个月里,与社区成员一起完善了 Git。

2005年以后:Git 的快速发展

  • Git 在2005年4月发布,很快就因其速度、数据完整性和对非线性开发的支持(通过成千上万个并行分支)而受到欢迎。
  • Git 的设计哲学强调性能、简单性、非线性开发的支持和完全的分布式。
  • Git 的开源性质和强大的社区支持使其迅速成为最受欢迎的版本控制系统之一。

2008年:GitHub 的成立

  • GitHub 是一个基于 Git 的代码托管平台,它于2008年成立。GitHub 提供了一个易于使用的界面,使得 Git 的使用更加普及,并促进了开源项目的发展。

至今:Git 的主导地位

  • 随着时间的推移,Git 已经成为最流行的版本控制系统,广泛应用于软件开发、文档管理和其他需要版本控制的领域。
  • Git 社区持续发展,不断有新的工具和插件被开发出来,以增强 Git 的功能和易用性。

 2.2 GIT特点

1. 近乎所有操作都是本地执行(离线操作)

  • Git 的大多数操作都在本地完成,这意味着你几乎不需要网络连接就可以进行提交、查看历史、创建分支等操作。这不仅提高了操作的速度,而且也使得工作在网络连接不稳定或没有网络的环境下成为可能。
  • 由于操作主要在本地进行,你可以随时进行代码的提交和版本控制,然后在有网络连接时再将更改推送到远端仓库。

2. 时刻保持数据完整性(SHA-1 哈希值)

  • Git 通过使用 SHA-1 哈希算法来确保代码历史的完整性和一致性。每次提交都会生成一个唯一的哈希值(称为“提交ID”),这个哈希值是基于文件的内容、提交时间、作者信息等生成的。
  • 这种机制使得更改历史几乎不可能被篡改或损坏,无论是意外还是故意的,因为哈希值的任何微小变化都会导致一个完全不同的提交ID。

3. 文件流转的三个工作区域

         (1)工作目录:这是你当前正在工作的文件的实际目录。它从Git仓库的一个版本中提取了文件的实际内容,放在你的文件系统中供你使用或修改。

        (2) 暂存区域(索引或暂存区):当你完成了对工作目录中文件的修改后,下一步是将这些更改添加到暂存区域。这个区域包含了下一次要提交的文件快照,实际上它是你下次提交时项目的状态。

        (3) 地仓库:完成以上步骤后,你可以执行提交操作,将暂存区域的更改永久记录到本地仓库的历史记录中。这个本地仓库包含了项目的所有历史版本,每个版本都通过一个独特的提交ID标。

2.3 工作目录,暂存区,和本地仓库三者之间关系

  1. 你在工作目录中修改文件。
  2. 你选择你想要的文件进行下一次提交,将这些更改添加到暂存区
  3. 你执行提交操作,将暂存区中的更改永久地记录到本地仓库的历史中。
  4. 最后,当你准备好与他人共享你的更改时,你可以将这些提交从你的本地仓库推送到远端仓库。

  

   

三、GIT的安装与配置

3.1 安装GIT

下载地址:https://git-scm.com/,选择自己电脑对应的版本
 

  

3.2 查看GIT是否安装

在命令行下执行   git --version

    

单击右键,查看是否有git bash 命令

  

3.3 配置GIT

        用于设置Git的全局用户名和电子邮件地址。这些信息将用于在提交的commit log中标识您的身份。(第一次使用的时候配置,后面就不需要配置了)

git config --global user.name "teduweb"            //(用户名)
git config --global user.email "web@tedu.com"      //(用户邮箱)

要查看Git配置信息,可以使用以下命令:

git config --list

这个命令将会列出所有当前Git配置的键值对,包括用户名称和电子邮件地址。如果想要查看全局配置,可以添加--global标志:

git config --global --list

将只显示全局配置信息,这些信息适用于系统中所有的Git仓库。如果要查看特定仓库的配置信息,需要在该仓库的目录下运行不带--global标志的命令。

另外,如果只想查看特定的配置项,例如用户名,可以运行:

git config user.name

或者,如果您想查看电子邮件配置:

git config user.email

请注意,如果在同一键下有多个配置(例如,局部和全局),git config --list会列出所有的配置,而git config <key>将仅显示找到的第一个配置值。

3.4 初始化GIT仓库

使用命令进行初始化,会生成一个.git的隐藏文件,用来记录所有的版本

git init

命令执行后,会出现一个半透明的文件

 如果遇到看不到的情况,需要将隐藏文件进行勾选

📝大佬觉得本文有所裨益,不妨轻点一下👍给予鼓励吧!

❤️❤️❤️本人虽努力,但能力尚浅,若有不足之处,恳请各位大佬不吝赐教,您的批评指正将是我进步的动力!😊😊😊

💖💖💖若您认为此篇文章对您有所帮助,烦请点赞👍并收藏🌟,您的支持是我前行的最大动力!

🚀🚀🚀任务在默默中完成,价值在悄然间提升。让我们携手共进,一起加油,迎接更美好的未来!🌈🌈🌈

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

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

相关文章

28、查看Qt源码

一、方法1 在安装Qt时&#xff0c;需要勾选“Sources” 在Qt的安装目录Qt5.12.10\5.12.10\Src中可以找到Qt的源码 二、方法2 访问如下网址&#xff08;需要翻墙&#xff09; https://codebrowser.dev/ 在搜索框中输入要查找的信息&#xff0c;如&#xff1a;QMainWindow&…

【IDE】com.intellij.debugger.engine.evaluation.EvaluateException

目录标题 报错重现代码分析解决方式 报错重现 Error during generated code invocation com.intellij.debugger.engine.evaluation.EvaluateException: Method threw java.lang.NullPointerException exception.代码分析 //ls来自上下文 ls.stream().map(m->m.getRewardTy…

Windows11系统配置WSL2网络使它支持LAN访问

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、WSL2安装二、使用步骤1.NAT2.镜像 三、写在最后总结 前言 WSL2的出现感觉真的是一个惊喜&#xff0c;又想玩Linux&#xff0c;又怕日用搞不了的最佳替代方…

深度学习入门到放弃系列 - 阿里云人工智能平台PAI部署开源大模型chatglm3

通过深度学习入门到放弃系列 - 魔搭社区完成开源大模型部署调用 &#xff0c;大概掌握了开源模型的部署调用&#xff0c;但是魔搭社区有一个弊端&#xff0c;关闭实例后数据基本上就丢了&#xff0c;本地的电脑无法满足大模型的配置&#xff0c;就需要去租用一些高性价比的GPU机…

优选算法——双指针2

题目一——有效三角形的个数 思路 先审题 举个例子&#xff0c;下面一个序列可分成4个三元组 然后我们论证哪个可以组成三角形即可 判断三个数能不能组成三角形&#xff1a;任意两边之和大于第三边 注意第一个和第四个&#xff0c;有人说&#xff0c;这不是两个相同的吗&#…

原生小程序开发如何使用 tailwindcss

原生小程序开发如何使用 tailwindcss 原生小程序开发如何使用 tailwindcss 前言什么是 weapp-tailwindcss ?0. 准备环境以及小程序项目1. 安装与配置 tailwindcss 0. 使用包管理器安装 tailwindcss1. 在项目目录下创建 postcss.config.js 并注册 tailwindcss2. 配置 tailwind…

【强训笔记】day22

NO.1 思路&#xff1a;将情况全部枚举出来。 代码实现&#xff1a; #include <iostream> #include<string> using namespace std;string a,b; int main() {cin>>a>>b;int ma.size(),nb.size();int retm;for(int i0;i<n-m;i){int tmp0;for(int j…

【UnityShader入门精要学习笔记】第十二章 屏幕后处理效果

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 建立一个基…

上位机图像处理和嵌入式模块部署(树莓派4b的提高版)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 目前人工智能非常火&#xff0c;但是人工智能需要极高的算力和海量的数据&#xff0c;因此相关的关联公司非常吃香&#xff0c;nvidia就是提供算力…

【基本数据结构】链表

文章目录 前言链表简介头节点与尾节点特性 分类单向链表双向链表循环链表 单链表基本操作定义并初始化单链表读取节点插入节点删除节点修改节点 参考资料写在最后 前言 本系列专注更新基本数据结构&#xff0c;现有以下文章&#xff1a; 【算法与数据结构】数组. 【算法与数…

互联网搞钱大变天,这有几条活路

互联网搞钱大变天&#xff0c;这有几条活路 靠互联网营生的各位同胞&#xff0c;你们有没有想过这样一个问题&#xff1a;假如有一天你的自媒体账号全被封了&#xff0c;你手上的操作项目全都黄了&#xff0c;你会怎么办&#xff1f; 就封号这事在这几年相信大家都不会陌生&a…

【LLM第五篇】名词解释:prompt

1.是什么 提示工程&#xff08;Prompt Engineering&#xff09;是一门较新的学科&#xff0c;关注提示词开发和优化&#xff0c;帮助用户将大语言模型&#xff08;Large Language Model, LLM&#xff09;用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解…

深入了解 npm:Node.js 包管理工具详解

文章目录 一、npm 基本概念1.1 什么是 npm&#xff1f;1.2 package.json 文件 二、npm 常用命令2.1 初始化项目2.2 安装依赖2.2.1 安装单个包2.2.2 全局安装包2.2.3 安装开发依赖 2.3 移除依赖2.4 更新依赖2.5 查看已安装的包2.6 发布包 三、npm 高级用法3.1 使用 npm scripts3…

JETBRAINS IDES 分享一个2099通用试用码!CLion 2024 版 ,支持一键升级

文章目录 废话不多说上教程&#xff1a;&#xff08;动画教程 图文教程&#xff09;一、动画教程激活 与 升级&#xff08;至最新版本&#xff09; 二、图文教程 &#xff08;推荐&#xff09;Stage 1.下载安装 toolbox-app&#xff08;全家桶管理工具&#xff09;Stage 2 : 下…

nestJs中跨库查询

app.module.ts中配置 模块的module中 注意实体类在写的时候和数据库中的表名一样 service中使用一下

【JS】call和 apply函数的详解

JavaScript 中 call() 和 apply() 函数的详解 在JavaScript中&#xff0c;call()和apply()都是非常重要的方法&#xff0c;用于调用函数时指定函数体内的this的值&#xff0c;从而实现不同对象之间的方法共享。尽管它们的功能非常相似&#xff0c;但在实际使用中各有其优势和特…

生产环境磁盘变更方案

datanode磁盘扩容(1人天) 扩容磁盘 1.1 扩容前检查、新盘初始化 确定block副本统计正常,无丢块,无under-replicated 块 后台执行命令检查 hdfs dfs fsck / 无异常可进行以下步骤进行磁盘扩容 新盘初始化 ##格式化新盘,命令示例: mkfs.xfs /dev/sdc##挂载新盘,命令示…

【AI学习】聊两句昨夜OpenAI的GPT-4o

蹭个热点&#xff0c;聊两句昨夜的大事件——OpenAI发布GPT-4o&#xff0c;我看到和想到的一点东西。 首先是端到端方法&#xff0c;前面关于深度学习的文章&#xff0c;对端到端的重要性做了一些学习&#xff0c;对端到端这个概念有了一些理解。正如Richard Sutton在《苦涩的…

大数据Scala教程从入门到精通第六篇:Scala源文件编写和运行

一&#xff1a;Scala源文件编写和运行 1&#xff1a;源代码比较 public class HelloJava{public static void main(String[] args){System.out.println("hello scala")} } object HelloScala{//用于声明方法 入参是一个String类型的数组。返回值类型为空def main…

鸿蒙内核源码分析(gn应用篇) | gn语法及在鸿蒙的使用

gn是什么? gn 存在的意义是为了生成 ninja,如果熟悉前端开发,二者关系很像 Sass和CSS的关系. 为什么会有gn,说是有个叫even的谷歌负责构建系统的工程师在使用传统的makefile构建chrome时觉得太麻烦,不高效,所以设计了一套更简单,更高效新的构建工具gnninja,然后就被广泛的使用…