手把手教你安装Git,萌新迈向专业的必备一步

news2024/11/23 8:57:28

在这里插入图片描述

正如标题所说,GIT是萌新迈向专业的必备一步。初学编程时,你可以不管版本控制等问题,但想要更专业或职业化,学习GIT是必备的。所以本次手把手系列,终于来到了GIT篇,不过GIT的内容其实比较多,倒也不需急于求成,今天就让我们开始第一步,介绍git、手把手教你安装并演示基础使用

📕作者简介:战斧,从事金融IT行业,有着多年一线开发、架构经验;爱好广泛,乐于分享,致力于创作更多高质量内容
📗本文收录于 GIT 专栏,有需要者,可直接订阅专栏实时获取更新
📘高质量专栏 云原生、RabbitMQ、Spring全家桶 等仍在更新,欢迎指导
📙Zookeeper Redis kafka docker netty等诸多框架,以及架构与分布式专题即将上线,敬请期待


一、版本控制系统是什么?

1. 倒霉的小明

小明是一名软件开发工程师,他负责一个重要的项目,在开发过程中,小明不断地修改和更新代码。他不断地添加新功能和修复错误,并保存在文件夹中。

在一个星期的努力工作之后,小明终于完成了项目的第一个版本。但是,在将代码打包上传到测试环境时,他意识到自己犯了一个错误,他在代码中删除了一个非常重要的函数。小明现在无法恢复该函数,因为他没有备份任何早期的版本。这意味着他需要从头开始编写该函数,从而浪费他几天甚至几周的时间

小明的项目负责人要求他恢复被删除的函数,并问他是否还有以前的版本可以使用。小明不得不告诉他,他没有记录每个版本的变化,也没有备份任何早期版本的代码。这让项目负责人非常失望

没过几天,同事小张发现了一个重大问题,小张写的一段核心代码丢失了。最后发现,是小明和小张一起在改这个功能,因为互相没有提前通知,导致小明在不知情的情况下,把小张刚交上去的代码覆盖掉了,这让项目负责人非常失望,并质疑起小明的能力

最终,小明的项目被推迟了几周,因为他必须重新编写功能,在没有任何历史记录和备份的情况下进行提交。这个项目经历了很多问题和延误

在这里插入图片描述

2. 版本控制系统

正是因为预见了小明的情况,所以开发者们研究出了一种叫版本控制系统的东西。 版本控制系统是一种用于记录、管理和追踪软件代码、文档和其他数字内容变更的系统它可以跟踪每个版本的变化,并提供工具来处理多个开发者之间的并发更新和合并不同版本的代码。版本控制系统可以解决软件开发过程中的许多问题,包括:

  1. 保留历史记录和版本控制 - 可以轻松追踪软件代码的变化,并了解每个版本的变更和贡献者信息。

  2. 合并冲突和分支管理 - 当多个开发者同时修改同一文件时,版本控制系统可以帮助合并代码冲突并跟踪分支变化,从而避免出现代码丢失或重复编写问题。

  3. 团队协作 - 版本控制系统可以使团队成员协同开发,可以在多个开发者之间共享代码、文档和其他文件,并对其进行协调和管理

3. 常见的版本控制系统

SVN:SVN曾经是最流行的版本控制系统之一。它是一个集中式版本控制系统,用于管理和维护文件和目录的历史记录

CVS:是另一种集中式版本控制系统,它被广泛用于开源软件开发

Git:目前非常流行的分布式版本控制系统,由Linus Torvalds为Linux内核开发而创建

不难看出,只有Git才是分布式版本控制系统,集中式版本控制系统分布式版本控制系统主要区别在于代码库的位置和同步方式。
集中式版本控制系统的代码库存储在中央服务器上,开发人员需要通过网络连接到服务器进行操作,因此对于服务器的可靠性和带宽要求较高。而分布式版本控制系统的代码库分布在每个开发人员的本地,开发人员可以在没有网络连接的情况下进行代码的操作,同时由于代码库可以在不同的本地进行复制和同步,因此也更加灵活和分散化。

在这里插入图片描述

上图中,我们的模型中,出现了Git中的三个概念(本次先不提暂存区)

  • 远程仓库 (Remote Repository)
    远程仓库通常位于网络上的服务器,可以用作代码共享和备份,同时也是多人协同开发的必要组成部分。可以在本地从远程仓库中克隆代码库,并将本地代码库提交到远程仓库,以实现代码的共享和备份。
  • 本地仓库 (Local Repository)
    本地仓库是指在本地计算机上创建的用于存储代码修改记录的仓库。可以在本地对代码进行修改、提交、回退等操作,并与远程仓库同步,以实现多人协同开发和代码备份。
  • 工作区 (Working Directory)
    工作区是指在本地计算机上实际工作的目录,其中包含了当前正在开发的代码以及相关文件和目录。可以通过 Git 将工作区代码提交到本地仓库,或将本地仓库中的代码同步到工作区。

总的来说:
工作区是实际工作的目录,是你在本地电脑上看到的文件夹,它本身没有进行任何版本控制

Git的核心其实是本地仓库它是以一个.git目录的形式存储在项目的根目录下的隐藏文件夹中。里面包含了 Git 用来管理代码版本的所有数据和元数据。在本地仓库中,Git 记录了所有对代码的修改,包括每个版本的提交时间、提交人、修改内容等。有了本地仓库,你可以回退到之前的任何一个版本,或者查看每个版本之间的差异,非常方便地进行代码版本管理。

远程仓库一般是网络服务器,是多人协同开发和代码备份的中心.

如果我们只有一个人,在自己的电脑上开发的话,就不需要远程仓库,只需要在本地创建一个 Git 本地仓库,进行代码的提交、修改、撤销等操作即可。


二、GitLab 与 GitHub

说到 Git,笔者觉得还应当介绍另外两个东西,即 GitLabGitHub ,这两者都是版本控制管理平台,并使用Git作为其核心。我们可以这么说,这两者都是Git的前端界面,它们提供了Git的分布式版本控制系统的前端交互和可视化管理界面,下面我们来详细介绍

1. GitLab

Gitlab是被广泛使用的基于git的开源代码管理平台, 主要针对软件开发过程中产生的代码和文档进行管理,一般用于企业存放代码,并配套以持续集成等功能,笔者公司使用的亦是该平台

在这里插入图片描述
GitLab的主要功能包括:

  • Git仓库管理:GitLab支持多种Git客户端,包括Git、HTTPS和SSH。同时支持使用Git命令行工具或者Web界面进行代码的提交、拉取、合并和分支管理等操作。

  • 代码审查:通过GitLab的代码审查功能,开发人员可以进行代码的检查、评论和讨论,以便发现潜在的问题和错误。

  • 持续集成:GitLab与CI/CD(持续集成/持续交付)工具进行了集成,用户可以通过GitLab进行代码检查、编译、测试和部署等自动化流程。

  • 问题跟踪:通过GitLab的问题管理功能,开发团队可以跟踪问题的状态和进度,从而更好的管理和解决问题。

  • 敏捷开发:GitLab支持敏捷开发过程,包括迭代、用户故事、冲刺和团队管理等功能。

总之,GitLab是一个强大的代码托管和管理工具,可以帮助开发团队提高开发效率、加强协作和提高代码质量

2. GitHub

前面说了 GitLab 适合大团队和企业使用,而对于大多数开发者,GitHub 才更耳熟能详。GitHub 是基于Git的代码托管平台,且注重于开源社区,我们知道的大部分开源软件,都维护在GitHub上 点此跳转

在这里插入图片描述

不管你现在是否能用得上,作为一名开发者,笔者还是建议各位同学都去注册一下,哪怕不在上面建项目,去阅读一些开源框架源码也是很有利的,比如看看JDK 、ZK 之类的。

在这里插入图片描述

当然,由于一些原因,访问 GitHub 并不总是成功,同学们经常会遇到登不上,打不开页面之类的问题。由于本站限制讨论这类问题,所以需要各位发挥自己去搜索并解决了

如果不想费那个事,也可以使用国内平替,现在使用的人也非常多,而且支持直接从Github 导入仓库,这就是 “”码云 “ —— Gitee。 可点击进入官网,由于Gitee在中国,因此它提供了更多的面向中国用户的优化,如中文界面、更快的访问速度等。

在这里插入图片描述


三、Git安装

1. 下载

我们要弄Git,第一步肯定还是需要下载并安装Git。在此过程中,需要根据你的操作系统选择相应的版本。在Windows上,可以前往Git官网 点此直达下载.exe程序,而在Mac和Linux上,则需要使用命令行安装Git

在这里插入图片描述
点击后根据自己的系统情况进行下载即可,笔者是win10-64位,所以下载对应的内容

在这里插入图片描述
当然,有时候国内下载并不是很好用,所以我也上传了资源,如果没被管理员下架的话,你可以点此下载 Git-2.42.0-64-bit-windows安装版

2. 安装

对于Windows用户,您只需双击下载的.exe文件,并按照安装向导的指示进行操作即可完成安装。
在这里插入图片描述

除了安装路径可以按需调整下,中间一路NEXT就可以,即采用默认设置就可以

在这里插入图片描述
在这里插入图片描述

3. 验证

在成功安装Git之后,你可以在命令行中输入以下命令来验证它是否正常工作,windows下,可以在命令控制台输入

git --version 

来查看版本,如果显示版本正常,即代表安装成功。
在这里插入图片描述


四、初学使用

既然我们已经下载完Git了,我们现在就来初步学习下如何使用。首先,我们得有一个本地项目,然后为这个工程建立一个本地仓库,并把我们的代码提交到本地仓库。如果我们只是在本地编辑代码,那其实弄完本地仓库就可以了。

1. 本地仓库

我们先找到自己要处理的项目,或新建一个项目,如下:
在这里插入图片描述

找到项目的源码根目录

在这里插入图片描述

右键空白处,打开git命令界面

在这里插入图片描述
1.因为我们是第一次使用git,所以先设置我们的用户名称与邮件地址。

git config --global user.name "你的姓名"
git config --global user.email "你的邮箱"

在这里插入图片描述

2.设置完这些以后,开始对项目进行处理。我们先将本地目录初始化为 Git 仓库。 我们可以把初始分支称为 main

git init -b main

在这里插入图片描述

成功后,该目录下应该有一个名为 .git 的隐藏目录。(浏览隐藏目录需自行设置文件浏览器,不再赘述)

在这里插入图片描述
3.将本目录下所有文件通过add,暂存进本地仓库

git add .

在这里插入图片描述
图中的警告,为windows换行符与Linux换行符不同的问题,可通过 git config --global core.autocrlf true 进行处理,不再赘述。

4.最后一步,将暂存的文件进行提交,-m 为提交附带的信息,我们这里就叫“First commit”

git commit -m "First commit"

在这里插入图片描述

2. 远程仓库-Github

如我们所说,如果同学们的项目不满足于本地机器操作,想把自己的代码上传至平台,那就还需要进行远程仓库的处理。我们将分别演示如何将本地内容上传至 Github / Gitee ;我们先从 Github 讲起,Github 其实是有客户端的。不过,面向新手同学,我们这里还是依靠命令行来处理.

1.前面Github 注册账号、登录等内容,在此就不展开了,我们从在GitHub.com 上创建一个新存储库说起,如下:
在这里插入图片描述
在这里插入图片描述
2.复制我们新建的这个远程仓库的地址,注意有 HTTPS 和 SSH 两种类型,我们这里选HTTPS的。

在这里插入图片描述

3.在我们本地项目根目录,右键打开git命令行,并输入

git remote add origin 远程仓库地址

在这里插入图片描述

4.最后一步,把我们本地仓库的代码推送到Github上

$ git push origin main

在这里插入图片描述

此时可能会弹出验证,我们登陆一下即可。

在这里插入图片描述

5.在Github 上检视我们的项目
在这里插入图片描述

3. 远程仓库-Gitee

1.前面的内容与上述的github是一样的,包括Gitee的注册登录、Gitee上新建仓库等
在这里插入图片描述
2. 后续步骤也是一样,复制这个Gitee远程仓库的url
在这里插入图片描述

3.上传至远程服务器,这里为了与git里我们设置的别名不冲突,将gitee的远程仓库命名为gitee-origin

git remote add origin 远程仓库地址

在这里插入图片描述
然后推送

git push -u gitee-origin main

在这里插入图片描述

4.检视我们的gitee项目情况,项目已成功推送到了Gitee

4. Idea对接Git

在日常工作中,我们都是通过Idea 进行代码编辑,而其也支持git的操作,我们只需进行如下设置
在这里插入图片描述
配置上自己安装好的的git的位置即可
在这里插入图片描述

5. idea提交至Gitee

假如我们新改动了一点源码,或新增了文件,该如何将其推送到Gitee平台呢?
(我们前面为项目设置了两个远程仓库Github 及 Gitee,但推送至Gitee时因为使用了 git push -u gitee-origin main 命令,其中的 -u 代表了默认远端,所以后续如果我们push时没有指定远端,默认就会推送至Gitee)

在这里插入图片描述

修改代码Git会自己识别,而新增文件一般只要在这个目录下,Idea会自动弹出弹框,询问我们是否需要把该文件纳入Git的管理,我们选择是即可。即便点错了,后续右键单击该文件,同样可以将其add进Git

在这里插入图片描述

我们的改动发生在工作区,如果你还记得我们前面的模型,那应该知道,我们接下来要先将改动提交到本地仓库,然后再将本地仓库推送到远程仓库,具体操作如下,先点击commit按钮

在这里插入图片描述

在接下来的弹框中,确认我们修改的文件是在Staged下(若不在,可手动选中文件右键,将其置为Staged),然后填上本次提交的信息,进行commit

在这里插入图片描述

然后在弹框内二次确认,最终push即可

在这里插入图片描述

最后,我们就可以在gitee上看到自己的修改成果了

在这里插入图片描述

总结

本次我们从Git模型,到安装,到对接idea,到手把手演示了如何把代码推送至Github 和 Gitee。力求做到即使是零基础的开发者,也能看得懂、学得会。后续我们还会编写Git专栏的其他文章,届时将着重于原理,更细致的模型,以及其各式各样的命令,希望能帮助到各位小伙伴

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

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

相关文章

关于安防视频汇聚平台EasyCVR视频平台的分析以及应用用途

为了保证对园区环境风险进行有效识别,传统视频监控存在视频结构化利用率低的问题,在实际使用过程中,安全管理人员工作效率低下,依靠人工肉眼查看灵活度低,风险漏报概率高,出现异常情况跟踪不及时&#xff0…

post为什么会发送两次请求

今天看掘金的文章,京东面试问了这个问题,我也处于好奇,想了解这块的内容所以做了以下的来了解: 请求是一对请求,有一次请求是预请求(预检请求),它的请求方式是options 火狐浏览器可…

long型的时间戳自动转化为字符串

1、自定义序列化类 import com.fasterxml.jackson.databind.annotation.JacksonStdImpl; import com.fasterxml.jackson.databind.ser.std.ToStringSerializerBase;JacksonStdImpl public class ToDateStringSerializer extends ToStringSerializerBase {public ToDateStringS…

AP9234 9W升压恒流型 DCDC多串LED恒流驱动 2串3串 LED灯串

描述 AP9234是一款由基准电压源、振荡电路、误差放大电路、相位补偿电路、电流限制电路等构成的CMOS升压型DC/DC LED驱动。由于内置了低导通电阻的增强型N沟道功率MOSFET,因此适用于需要高效率、高输出电流的应用电路。另外,可通过在VSENSE端子连接电流…

SpringBoot扩展接口总结

SpringBoot 扩展接口 1、可扩展接口启动调用概述2、可扩展的点逐个说明2.1、ApplicationContextInitializer2.2、BeanDefinitionRegistryPostProcessor2.3、BeanFactoryPostProcessor2.4、InstantiationAwareBeanPostProcessor2.5、SmartInstantiationAwareBeanPostProcessor2.…

【Docker 】Docker 客户端,容器使用,启动容器,启动已停止运行的容器,停止一个容器,进入容器

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖&#x1f…

刘强东的低价武器再上膛

电商的光辉正撒向中国的每一个角落。 河北南部的一个村子,74岁的陈奶奶站在大门口,正等待着小哥送货上门,孤身在家的她平时吃的油盐酱醋,喝的奶粉豆浆,都由女儿崔丽丽在网上买。由于京东是村子里唯二可以上门的快递&a…

C++学习|CUDA安装和配置

CUDA安装和配置 Windows下安装CUDAVS项目配置CUDA Windows下安装CUDA 第一步:先看自己NIVIDIA显卡适合什么版本的CUDA。打开电脑的“NIVIDIA控制面板”->系统信息->组件。会看到我的显卡驱动最高支持的CUDA版本是11.4.56。 第二步:去CUDA官网&…

电脑固定资产管理系统

为了更好地管理固定资产,系统管理员划分了相应的用户使用权限。各级管理者在系统中拥有不同的权限,这些权限能够帮助他们更好地查看和管理其管辖的固定资产。 从基层管理者到高级管理者,每一级别的管理者都能够获得相应的授权和管理权…

将Spring boot 项目部署到tomcat服务艰难

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z X Y Z

SVN 集中式版本管理平台

1. SVN 命令行工具下载地址 https://www.visualsvn.com/downloads/ 2. 下载SVN 命令行工具后,解压后就可以了,不需要安装的 3. 将bin 文件添加到系统环境变量中,不知道怎么打开系统环境变量的自己问度娘 4. 添加到系统环境变量中,…

Scala入门,idea关联Scala

Scala 介绍 Scala是一种多规范的编程语言,它结合了面向对象编程(OOP)和函数式编程(FP)的特征,Scala的名字源于”Scalable language“,意为”可伸缩语言“。2003年开发的,并在JVM&a…

计算机网络高频面试题解(三)

23. 流量控制 24. 粘包、拆包问题 25. TCP如何解决粘包、拆包问题 26. UDP如何实现TCP可靠传输 27. IP协议 28. IP的两大功能 29. 为什么IP要采用面向无连接? 30. IP地址(IPv4地址) 31. IP地址的分类 32. 广播地址

Linux防火墙,可以防护什么?和常用的命令和各种日常使用(个人笔记)

文章目录 防火墙开启默认是否可以ping通http涉及端口的服务(默认无法连接)参考文档 防火墙开启默认是否可以ping通 可以的,并不会防护icmp类型的访问,但是会拦截http类型的访问查看ipifconfig查看防火墙状态 systemctl status fi…

关于WinRAR代码执行漏洞的漏洞通报预警

1、产品描述&#xff1a;WinRAR是一款用于管理压缩包文件的共享软件。 2、影响产品或组件及版本&#xff1a;WinRAR WinRAR <6.23 3、受影响资产情况&#xff1a;百万及以上 4、利用过程及结果&#xff1a; 首先利用两个压缩工具&#xff0c;一个是7z&#xff0c;一个是rar…

【Python】从入门到上头— 错误和异常以及调试(5)

文章目录 一.错误和异常1.语法错误2.异常 二.异常处理1.try/except2.try/except...else3.try-finally 三.抛出异常四.用户自定义异常五.调试print()断言loggingIDE 一.错误和异常 Python 有两种错误很容易辨认&#xff1a;语法错误和异常。 Python assert&#xff08;断言&…

多种定位技术融合,破局室内外高精度定位

随着我国自主研发的北斗三号全球卫星导航系统的开通&#xff0c;全球定位服务进入了一个新的时代。北斗系统提供了全天候、全天时、室内外高精度的定位服务&#xff0c;使得定位服务不再受限于时间和空间的限制&#xff0c;全民都能够享受到定位服务带来的便利。 北斗高精度定位…

为 LVGL 添加截图功能(lv_100ask_screenshot)

完整的演示视频观看&#xff1a; https://www.bilibili.com/video/BV18r4y1X7MJ 前言 lv_100ask_screenshot 是一个基于 lvgl 的屏幕截图工具。 lv_100ask_screenshot 特性&#xff1a; 可以将LVGL的屏幕对象(全屏)保存为图片文件&#xff1a;lv_scr_act()&#xff0c;laye…

每日汇评:在美国就业数据公布之前,黄金将在两条关键移动平均线之间波动

1、金价在跌破1920美元上方后进入盘整阶段&#xff1b; 2、在中国推动的乐观情绪中&#xff0c;美元出现调整&#xff0c;投资者权衡鲍威尔的更高更长利率观点&#xff1b; 3、黄金价格徘徊在21日和200日移动平均线之间&#xff0c;RSI看跌&#xff0c;交易清淡&#xff1b; …

C# NetTopologySuite+ProjNet 任意图形类型坐标转换

添加引用&#xff1a;NetTopologySuite、ProjNet、ProjNet.SRID Program.cs文件&#xff1a; using ProjNet.CoordinateSystems; using ProjNet.CoordinateSystems.Transformations; using ProjNet.SRID; using System; using System.Collections.Generic; using System.Linq;…