Git版本控制器

news2024/11/16 17:28:43

文章目录

  • 1.Git介绍
    • 1.1.什么是Git?
    • 1.2.Git的历史
    • 1.3.版本控制分类
      • 1.3.1.集中式版本控制
      • 1.3.2.分布式版本控制
    • 1.4.Github(Git服务器)
    • 1.5.Git原理
  • 2.使用前的准备
    • 2.1.准备Git
      • 2.1.1.安装Git
      • 2.1.2.配置环境变量
      • 2.1.3.IEDA配置Git
      • 2.1.4.安装git插件(TortoiseGit)
    • 2.2.准备Gitee
      • 2.2.1.注册Gitee账号
      • 2.3.2.创建版本仓库
        • 2.3.2.1.进入管理页面
        • 2.3.2.2.创建仓库
        • 2.3.3.安装Gitee插件
  • 3.发布
    • 3.1.创建空工程
    • 3.2.创建模块
    • 3.3.发布项目
      • 3.3.1.创建git本地仓库
      • 3.3.2.添加到暂存区
      • 3.3.3.提交到本地仓库
      • 3.3.4.推送到远程仓库
  • 4.克隆
    • 4.1.删除工程
    • 4.2.克隆工程
  • 4.提交
    • 4.1.修改工程
    • 4.1.**提交到本地仓库**
    • 4.4.推送到远程仓库
  • 5.更新
    • 5.1.模拟场景
    • 5.2.下载版本库中最新的代码
  • 6.冲突解决
    • 6.1.模拟场景
    • 6.2.提交
    • 6.3.解决冲突
    • 6.4.如何避免冲突
  • 7.分支的使用
    • 7.1.为什么要创建分支?
    • 7.2创建分支
    • 7.3.合并分支
  • 8.历史记录
  • 9.git版本管理注意事项
    • 9.1 gitee成员添加与冲突提示
    • 9.2 协同开发版本同步问题(版本管理注意事项)
    • 9.3 初始化项目提交失败

1.Git介绍

1.1.什么是Git?

Git是一个开源分布式版本控制系统可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 LinusTorvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

1.2.Git的历史

在这里插入图片描述

1.3.版本控制分类

  • SUBVERSION
  • gitlab
  • git

1.3.1.集中式版本控制

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。如果不连网则无法使用版本控制器。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS
*在这里插入图片描述*

1.3.2.分布式版本控制

所有版本信息仓库全部同步到本地的每个用户,这样就可以离线使用版本控制器,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

在这里插入图片描述
git是一个分布式版本管理工具,是可以在你电脑不联网的情况下,只在本地使用的一个版本管理工具,其作用就是可以让你更好的管理你的程序比如: 你原来提交过的内容,以后虽然修改了,但是通过git这个工具,可以把你原来提交的内容重现出来,这样对于你后来才意识到的一些错误的更改可以进行还原

1.4.Github(Git服务器)

  • 国内的代码托管平台(码云)地址:https://gitee.com/
  • 国外git服务器(github)地址:https://github.com/
    在部分企业中,开发人员是否拥有Github帐户,在Github中是否有个人的代码和资料发布、发布数量等,成为了开发人员实力的一种评价标准。

1.5.Git原理

  • 工作区: 项目所在的目录
  • 暂存区(stage/index): 用于储存工作区中的变更(增删改等改动)的目录
  • 本地仓库: 用于储存工作区和暂存区中提交上来的文件
  • 远程仓库: 远程github仓库

使用:

  • 平时我们写的代码都是在工作区
  • 执行add命令后就是提交到了暂存区
  • 再执行commit命令后就把代码提交到了版本库了(本地仓库)
  • 最后再执行push命令把本地代码提交到远程版本库。

在这里插入图片描述

2.使用前的准备

2.1.准备Git

2.1.1.安装Git

  • 在git下载页面中:https://git-scm.com/downloads,选择你的系统类型,这里我选择Windows,点击Windows
    在这里插入图片描述
  • 点击系统类型后,网站会自动进行下载
    请添加图片描述
  • 文件下载完成后,双击打开文件,进行安装在这里插入图片描述
  • 点击Next
    请添加图片描述
  • 设置安装路径
    请添加图片描述
  • 选择安装的组件,Git Bash Here指的是命令行模式,Git GUI Here指的是图形界面,选择默认,点击Next
    请添加图片描述
  • 设置开始菜单名称,不需要创建菜单就勾选下方的Don’t create a Start Menu folder,点击Next
    在这里插入图片描述
  • 设置编辑器,选择编辑器为git默认编辑器,点击Next
    在这里插入图片描述
  • 勾选Use Git from Git Bash only,然后点击Next,随后的四步直接点击Next即可
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 出现安装完成的标志时,将两个勾选都去掉,然后点击Finish
    在这里插入图片描述

2.1.2.配置环境变量

在这里插入图片描述

2.1.3.IEDA配置Git

安装完Git工具后第一步需要在IEDA里配置git执行程序的路径,选择 【File】→ 【Settings】→ 【Vwesion Control】→ 【Git】,选择git可执行文件的路径(正确配置的情况下,点击Test会弹出git版本的提示)
在这里插入图片描述

2.1.4.安装git插件(TortoiseGit)

  • 双击安装,下一步即可。
    在这里插入图片描述
  • 安装完成之后,点击鼠标右键会出现小乌龟样式。
    在这里插入图片描述

2.2.准备Gitee

2.2.1.注册Gitee账号

请自行在Github(https://gitee.com)网站中注册。

由于github服务器在国外,访问可能会存在问题,改为github,操作过程均一样。

注意:由于码云近期规则调整,发布公开项目需要审核,需按照指定规则填写方能开源。

2.3.2.创建版本仓库

2.3.2.1.进入管理页面

在这里插入图片描述

2.3.2.2.创建仓库

在这里插入图片描述

2.3.3.安装Gitee插件

  • 在idea的插件市场中搜索gitee插件
    在这里插入图片描述

  • 安装完成后重启

  • 生成私人令牌(注意:令牌第一次是明文,需要保存好。
    在这里插入图片描述

  • 使用token配置Gitee
    在这里插入图片描述
    在这里插入图片描述

3.发布

3.1.创建空工程

  • 后续可以添加多个项目到此空工程中
    在这里插入图片描述
    在这里插入图片描述

3.2.创建模块

注意:git会忽略空文件夹
在这里插入图片描述
在这里插入图片描述

3.3.发布项目

3.3.1.创建git本地仓库

  • 在idea的菜单项选择【VCS】→【Create Git Repository】
    在这里插入图片描述
  • 默认是直接定位到当前项目文件所在的磁盘目录,一般git初始化就在当前项目的根目录不需要修改路径,直接点击OK确定即可
    在这里插入图片描述
  • init完成之后,可以看到原本的项目文件名变成了红色了,红色在idea的git版本表示未add的文件(没有将项目添加到暂存区)
    在这里插入图片描述
  • 在系统资源管理中打开项目的磁盘文件目录,会发现一个.git的隐藏文件,这个文件就git的配置和仓库文件
    在这里插入图片描述

3.3.2.添加到暂存区

  • 右击项目——>点击Git——>点击Add
    在这里插入图片描述
  • 添加完成之后之前的红色文件名变成了绿色了
    在这里插入图片描述

3.3.3.提交到本地仓库

  • 点击【Git】→【Commit Directory】
    在这里插入图片描述
  • 填写提交注释说明,点击【commit】
    请添加图片描述
  • (可选)填写用户名和邮箱(若使用私人令牌配置的idea则不需要此步),填写gitee的注册邮箱和密码

3.3.4.推送到远程仓库

  • 点击【Git】→【Push】推送当前项目到远程仓库
    在这里插入图片描述
  • 复制gitee仓库地址
    在这里插入图片描述
  • 添加gitee远程仓库地址
    在这里插入图片描述
  • 推送项目到远程仓库
    在这里插入图片描述
  • 发布成功
    在这里插入图片描述
  • 如果出现提交拒绝可以在DOS窗口执行以下命令
    在这里插入图片描述
git pull origin master --allow-unrelated-histories

4.克隆

4.1.删除工程

  • 删除工作空间中的git_repository_third01工程

4.2.克隆工程

  • 选择菜单上【Git】→【Clone】
    在这里插入图片描述
  • 复制gitee仓库地址
    在这里插入图片描述
  • 复制的 git仓库地址粘贴到URL中,点击【Clone】
    在这里插入图片描述
  • 克隆完成之后,IDEA会提示导入项目

4.提交

4.1.修改工程

在这里插入图片描述

4.1.提交到本地仓库

  • 完成代码的开发后,直接将修改和添加的代码或文件提交到本地仓库上(文件已添加至暂存区,受git追踪):
  • 点击【Git】→【Commit File】
    在这里插入图片描述
  • 填写提交注释说明,点击【commit】
    在这里插入图片描述

4.4.推送到远程仓库

  • 点击【Git】→【Push】推送当前项目到远程仓库
    在这里插入图片描述
  • 点击【push】,推送到远程仓库
    在这里插入图片描述
  • 推送成功后,在 github 服务器上就会看到新推送的项目文件
    在这里插入图片描述

5.更新

5.1.模拟场景

  • 其他同事提交了代码到远程gitee仓库:
    在这里插入图片描述

5.2.下载版本库中最新的代码

  • 选中项目使用pull命令下载版本库中最新的代码
    在这里插入图片描述
    在这里插入图片描述
  • 更新结果:
    在这里插入图片描述

6.冲突解决

6.1.模拟场景

  • 远程仓库代码:
    在这里插入图片描述
  • 本地工作空间代码:
    在这里插入图片描述

6.2.提交

  • 代码有冲突是否合并,选择【Merge】
    在这里插入图片描述
  • 提交失败需手动合并:在冲突的面板上可以选择一个解决方案来解决冲突,前两个都是进行的覆盖操作,选择【Merge】进行手动合并
    在这里插入图片描述

6.3.解决冲突

  • 点击图中箭头合并代码
    在这里插入图片描述
  • 合并结果
    在这里插入图片描述
    在这里插入图片描述

6.4.如何避免冲突

  • 早上来了先更新:避免冲突
  • 写一个提交一个:把冲突留给别人(不推荐
  • 与发生代码冲突的同事协商(推荐

7.分支的使用

7.1.为什么要创建分支?

  • 当我们开发完了一个app上线了,接下那就是 迭代功能开发 ,如果上线的app出现了一个严重的bug,要你放下手头新功能的开发去解决这个bug,然后在发布一个新版本,如果你要是就在你要迭代功能的项目上进行修改发布的话,那肯定是不行的,且先不谈有没有新的bug出现,时间是也是不允许的,发布的前提还要把新功能完善好才行,要是删掉新功能的代码也不怎么现实,要是业务逻辑少一点还好说,要是多的话那还真是有点无从下手了,所以 git的分支就很好的解决了版本迭代这个问题 ; 如下图:
    在这里插入图片描述
  • master就是我们的主代码,一直优化,到v1.4版本发布了,然后接着往下开发v2.0,v2.1版本,但是v1.4版本出现了一个严重的bug,这时候我们就在这个v1.4版本创建一个分支developer来对bug进行修复,到了v1.6版本bug修复好发布出去,然后在跟原来的master主代码进行合并一下把代码添加到v2.1版本就OK了,剩下就接着迭代开发了;

7.2创建分支

  • 不同分支互不干扰,即在一个分支上更新代码,不会影响到另一个分支(可以很好的实现版本迭代)
  • 使用checkout实现本地Idea所开发分支的切换
  • 创建分支后,需要在创建的分支条件下将新创建的分支推送到远程仓库,此时在远程仓库中才可以查看
  • 分支合并前,需要将二者更新后的代码提交至远程仓库后,才可以进行分支合并
  • 假如,现在项目开发完成,需发布1.0版本,然后添加一个1.0的分支。

  • 打开git分支菜单,点击【Branch】
    在这里插入图片描述

  • 创建新分支
    在这里插入图片描述

  • 创建新分支(版本为1.2的新分支
    -

  • 推送1.0分支到远程仓库(本地在使用1.0的状态下推送
    在这里插入图片描述

  • 创建新分支结果(各个分支代码互相不干扰
    在这里插入图片描述

  • 然后切换回主干分支,进行2.0版本的开发
    在这里插入图片描述

  • 在主干分支上添加新的功能,然后提交并推送到gitee上
    在这里插入图片描述

  • 切换到1.0分支,进行Bug修复,同样别忘了提交并推送到远程1.0的分支上
    在这里插入图片描述

7.3.合并分支

在1.0分支上完成BUG修改后,将主分支(master分支)与1.0分支进行合并:
在这里插入图片描述

  • 合并分支(切换到主分支,将1.0分支合并到主分支中)
    在这里插入图片描述
  • 合并结果(分支合并前,需要将二者更新后的代码提交至远程仓库后,才可以进行分支合并)
    在这里插入图片描述
  • 将合并后的主分支推送至远程仓库

8.历史记录

1、查看文件或项目提交的历史记录:选中文件 →【右击】→ 【Git】→ 【Show History】
在这里插入图片描述

  • IDEA默认展示你当前所选择文件的提交历史,左侧是文件的历史提交列表,右侧是每次提交与上一版本的比较
    在这里插入图片描述
  • 回退上一个版本:当你误删了一段代码(方法),但又提交了,可以使用下面Get的操作来进行回退。打开文件的历史提交记录,选择回退的版本 →【Get】,然后你就可以看到你的代码又回来了~
    在这里插入图片描述

9.git版本管理注意事项

9.1 gitee成员添加与冲突提示

在这里插入图片描述

9.2 协同开发版本同步问题(版本管理注意事项)

  • 问题示例
    在这里插入图片描述

  • 解决方法(添加 .gitignore文件)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 初始化仓库添加相关文件
    在这里插入图片描述

  • 使用插件手动田间版本控制器忽略文件
    在这里插入图片描述

9.3 初始化项目提交失败

  • 在gitee新创建好项目后,发现在idea中提交不成功(报错如下)

    在这里插入图片描述

  • 原因: 在本地项目中没有README.md文件,需要将仓库上的README.md文件pull到本地(使用小乌龟插件)

    git pull –rebase origin master
    

    在这里插入图片描述

  • 执行完上述命令后,会发现在本地文件夹中已经含有README.md文件

    在这里插入图片描述

  • 再次提交,发现可以成功push到远程仓库中

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

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

相关文章

java面向对象 final static 关键字

目录 关键字:static 类属性、类方法的设计思想 类变量(class Variable) 静态变量的内存解析 类方法(class method) 单例 (Singleton)设计模式 理解main方法的语法 代码块 关键字:final 总结 关键字:static 当我们编写一个类时&…

Vue.js设计与实现,读书笔记第一章

第一章:权衡的艺术 1.1命令式和声明式 jq是命令式,关注过程,jq针对简化dom 而产生的 vue是 声明式,关注实现,不严格地说就像是在命令式(关注过程)基础上再对标签进行了一次封装(关注实现) jQuery命令式…

干货 | Jmeter 如何保证抢购、秒杀活动正常运行?

1. 前言 平常为了保证运营促销、抽奖活动能正常运行,我们一般都需要使用 Jmeter、LoadRunner 对接口进行压力测试 使用它可以模拟一定量的用户同时去参与促销抽奖活动,最后生成测试报告,以此判系统接口的稳定性 本篇文章以抢购商品为例&am…

清华毕业大佬用了一个项目就把SpringMVC+Spring+MyBatis给讲完了

前言 时间飞逝,转眼间毕业七年多,从事 Java 开发也六年了。我在想,也是时候将自己的 Java 整理成一套体系。 这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开源框架、分布式等多个方面的知识点。 写这一套 Ja…

R语言学习笔记——入门篇:第五章-高级数据管理

R语言 R语言学习笔记——入门篇:第五章-高级数据管理 文章目录R语言一、数值与字符处理函数1.1、数学函数1.2、统计函数1.3、概率函数1.4、字符处理函数1.5、其他实用函数1.6、将函数应用于矩阵与数据框二、控制流2.1、循环(for,while&#…

从零开始带你实现一套自己的CI/CD(三)Jenkins+Harbor

目录一、简介二、安装Harbor2.1 Amd64架构安装Harbor2.2 Arm64架构安装Harbor找不到make命令找不到git命令执行make download和make compile_redis失败执行make compile_redis命令执行make prepare_arm_data命令执行make pre_update命令执行make compile COMPILETAGcompile_gol…

【OpenCV-Python】教程:4-4 SIFT 介绍

OpenCV Python SIFT (尺度不变特征变换) 【目标】 SIFT算法SIFT特征点和描述子 【理论】 前面的章节中,我们提到了角点检测,例如Harris角点,他们是旋转不变的,因为,图像无论如何旋转,其角点特性不会发生…

世界杯8强盘点

2022年卡塔尔世界杯(英语:FIFA World Cup Qatar 2022)是第二十二届世界杯足球赛,是历史上首次在卡塔尔和中东国家境内举行、也是第二次在亚洲举行的世界杯足球赛。除此之外,卡塔尔世界杯还是首次在北半球冬季举行、首次…

docker(八)compose

compose 一 简介: 通过前面几篇文章,我们了解了docker的基本知识,docker帮我们解决了服务打包安装的问题,但是随着服务的不断增多带来了如下问题: 多次使用Dockerfile Build Image或者DockerHub拉取Image;需要创建多…

Spark 动态资源分配参数与源码原理分析

1.1.1、Dynamic Allocation 1.1.1.1 参数说明 1.2 版本 参数名及默认值含义spark.dynamicAllocation.enabled false是否开启动态资源分配,主要是基于集群负载分配executorspark.dynamicAllocation.executorIdleTimeout60sexecutor空闲时间达到规定值&#xff0c…

程序人生:化解互联网 “寒冬” 危机,我教你摆脱困境

三年反复的yi情,近20年史无前例的互联网裁员潮汹涌而至。 寒冬来袭,每一个职场打工人,都感到了寒意。 互联网企业大裁员的底层逻辑,一方面是受宏观环境影响(yq、互联网红利结束、政策变化等),…

ChatGPT震撼上市,AI也开始跟你卷了,来一起看看怎么用ChatGPT!!!

强大AI产品,ChatGPT震撼上市,程序员真的要失业了吗? 最近聊天机器人异常火爆,火爆到什么程度,卖个关子,下文解释。 OpenAI推出了ChatGPT,它能够回答各种各样的问题,包括生成代码&a…

Node.js学习下(70th)

一、Buffer 缓冲区 背景 1、浏览器没有储存图片文件等媒体文件的需求,JS 存的都是一些基本数据类型。 2、服务器需要存储图片/视频/音频等媒体文件,因此有了 Buffer 缓冲器。 1. Buffer 是什么 Buffer 是一个和数组类似的对象,不同是 Buf…

python代码学习1

\n 换行符号 \r 回车 \b 后退一个格 \t 制表符(4个字符为一组,当不字符被占有时,重新生成一个制表符。如果被占据,不满4个字符时,生成剩余部分空格。) #原字符 不希望字符串中转义字符起作用&#xff0…

FME Server 无代码环境中自动化您数据和应用集成工作流

专为现代企业打造 简化数据和应用程序集成,让您的数据为您所用。在FME Desktop中创作工作流,并使用 FME Server 将其自动化,以按计划或响应事件运行数据集成。 构建无代码 Web 应用程序,提供自助式数据提交和验证,并向…

Java学习之动态绑定机制

目录 举例说明 父类 子类 main类 运行结果 ​编辑 动态绑定 举例说明 父类 子类 main类 分析 运行结果 Java重要特性:动态绑定机制(非常重要) 举例说明 父类 class A {//父类public int i 10;public int sum() {return getI(…

2022年11月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2022年11月国产数据库大事件和重要产品发布消息。 文章目录11月国产数据库大事记(时间线)产品/版本发布兼容认证排行榜新增数据库11月国产数据库大事记(时间线) 11月1日,国际知名研究机构 IDC …

什么是内存对齐

内存对齐 什么是内存对齐为什么要内存对齐内存对齐的规则结构体中内存对齐 sizeof无嵌套有嵌套 iOS中对象内存对齐 iOS中获取内存大小方式 class_getInstanceSize()malloc_size() iOS中内存对齐 实际占用内存对齐方式系统分配内存对齐方式问题 内存优化 总结 内存对齐 什么…

基于C++的AGV机器人无线控制

1 AGV系统概述 1.1AGV原理 AGV行走控制系统由控制面板、导向传感器、方向电位器、状态指示灯、避障传感器、光电控制信号传感器、驱动单元、导引磁条、电源组成。 AGV的导引(Guidance)是指根据AGV导向传感器(Navigation)所得到…

基于FFmpeg进行rtsp推流及拉流(详细教程)

目录 1.1 Windows系统 1.2 Ubuntu 和 Debian 系统 1.3 CentOS 和 Fedora 系统 1.4 macOS系统 2. 安装rtsp-simple-server 3. FFmpeg推流 3.1 UDP推流 3.2 TCP推流 3.3 循环推流 4 拉流 4.1 ffplay/VLC拉流显示 4.2 FFmpeg拉流保存成视频 1. 安装FFmpeg FFmpeg 是一…