当前位置: 首页 > news >正文

Git 版本控制/项目迭代

一、Git的作用/为什么要进行版本控制?

什么是项目迭代?

搞开发的时候我们不是一次性就做好平台的所有功能,而是先上线一个功能差不多的版本让用户用着,然后不断迭代、修改,上线新的版本,所以一个项目就会出现很多版本。

为什么要进行版本控制?

原因(1):我们对项目进行了七八轮的修改,最后发现还是最初的版本好用!但是我们不想再手动改回去,况且我们也忘了自己都改了什么,这就需要一个仓库去记录之前的历史版本。恢复到以前的版本可以理解为回滚。

原因(2):提升多人开发效率

二、git的诞生

Linux内核发布早期,难免很多错误,Linux社区的大佬们在体验Linux的过程中会发现这些错误,自己打补丁,给作者提交新版本的Linux内核。如果一天有100个大佬提交了100个补丁,那作者就要手动归档100次。

所以Linux的作者开发了Git。

仅用了两周,并且也是开源、免费的。

三、git的安装

超棒的教程

Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装_mukes的博客-CSDN博客

官网下载安装包会很慢,找国内镜像下载。

无脑next安装。

安装程序会自动配好环境变量,但是没啥用。

四、git bash  git cmd 和 gitGUI

只需要知道git bash是最重要的就行了,其他两个用不到

五、git的必要配置

        用户名和邮箱是必须要配置的,不然别人怎么知道新版本是谁提交的?

        Git的配置又分为修改整个系统的配置(system)和修改当前用户的配置(global),我们只需要改global的就可以了。

        有两种修改方式。

法(1)git bash命令行修改

1. 修改system配置

不用管。

2. 修改global配置(常用

git config --global user.name "zhangsan" 
git config --global user.email "zhangsan@jd.com"

查看配置信息 ,检查一下是否修改正确

git config --list

法(2)直接改配置文件

git系统的配置文件和用户的配置文件不在一个地方

1. 修改系统配置

 2. 修改用户配置

六、git是否要配环境变量?

都行。

因为git使用的时候一般是,先打开想要存放项目的文件夹(我们已经自己定位好了),然后右键选择git bash,所以其实不需要配环境变量。

七、git工作一览图

八、配置SSH-key

https://blog.csdn.net/qq_44886213/article/details/129841419

九、git常用操作

1. 在本地新建仓库

PS: 如果这个项目只是你自己在开发,那么一个本地仓库就够了,远程仓库是多人开发一个项目才能用到。

新建一个工作目录,打开git bash执行如下命令

git init

工作目录下就会出现一个.git文件夹,表明本地仓库新建成功。

2. 克隆远程仓库

更多情况下,我们不是项目的发起者,不需要自己建仓库,直接拉取同事建好的就行了。

git clone url

3. 提交到暂存库

我们改动了代码

git add .  #最后一个点的意思是,把工作目录下的所有文件都提交到暂存库

其实不用提交所有文件,因为我们一般只改了其中一两个文件。用 add . 是为了方便。后续在IDEA中使用git时,会直接帮我们识别改动了什么文件,不需要再执行git add命令了。

4. 提交到本地仓库

git commit -m "我改了什么东西"

5.提交到远程仓库

git push

6. git的提交过滤(.gitignore文件)

我们不想把工作目录的所有文件都进行版本控制,比如数据库文件,IDEA自己生成的.idea文件,日志文件,target下的文件,因为这些文件也不需要版本控制

7. 更新

如何获得别人最新提交的版本

我是直接重新git clone的

 十、IDEA中git的使用

git clone一个项目,然后直接用IDEA打开。

PS:git项目可以直接复制粘贴文件,比如说我们的项目目前在D:/workspcae/jdmeta下,我因为是用git clone拉去下来的,所以git可以在该目录下生效,可以用git commit/push命令提交,但是现在我们想把项目移动到D:/workplase/jdmeta2下面,只需要把D:/workspcae/jdmeta下的所有文件都复制粘贴到D:/workspcae/jdmeta2下就行了,只要包括了.git文件夹,git在新目录下照样生效。因为.git文件夹中的文件记录着这个项目的远程仓库地址,

git的操作只需要记住3步:

  1. git add
  2. git commit
  3. git push

 

十一、分支问题

1、git有一个中心仓库,库中有一个产品A的设计图纸,这个就是master。

2、码农A和B打算改进产品A;于是他们从仓库下载原始图纸到本地,然后在本地修改

3、码农A做出初步改进后打算提交,若其它任何码农均未提交,则可以直接提交;但却发现码农B已经提交自己的版本了

4、码农A认为自己的改进其实还有地方需要完善;那么如果每次合并主版本都要检查并合并B的修改(以及之后可能有的其它修改),显然会浪费很多时间,耽误后续开发;若草草检查就合入,就容易影响主版本的稳定。

5、于是码农A产生了一个分支,叫做产品A之码农A改进版;以后自己的改进都合进这个分支

6、码农B、C、D继续改进产品A的master版

7、N个月后,码农A认为自己的改进已经尽善尽美了,于是合并自己的“产品A之码农A改进版”到当前的主版本

8、但是两者冲突太多;于是码农A利用各种diff工具检查主版本和自己的分支版本之异同,注意观察自己的代码能否直接插入主版本而不引起逻辑故障;若不引起就合入,否则可能就要前后错几行、在合适位置合入。

9、合入后,经过重新测试,码农A就可以废止自己的分支版本,新功能开发完成。

10、任何参与开发的人,只要不是一次性修改,都应该这样开一个分支,把自己的工作先合入这个分支;等开发完全完成后再合并自己的分支到主版本。

简单来说:master只能存放稳定版本,也就是能够通过编译测试的版本。如果码农A要在master的基础上增加一个新的功能,并且预计两个周的时间,要改很多次,不断去修改这个功能,那么A就要新开一个自己的分支,当新功能写好了以后,再merge到master分支去。如果码农B只是对master做一下小修改,预计半小时就能改完,而且只改一两次,那么B直接在master上改就行,不用创建一个新的分支。如果码农A要在master的基础上新增一个功能,同时码农B也要在master的基础上新增一个功能,A和B都必须要新开分支,那如何merge呢?

上图中,A和maser进行merge的时候是没问题的,当B要merge到主分支时:程序员A和B坐在一起,用diff命令查看不同的地方,商量两个人的代码如何合并。

相关文章:

Git 版本控制/项目迭代

一、Git的作用/为什么要进行版本控制? 什么是项目迭代? 搞开发的时候我们不是一次性就做好平台的所有功能,而是先上线一个功能差不多的版本让用户用着,然后不断迭代、修改,上线新的版本,所以一个项目就会…...

智慧农业大数据项目建设方案

智慧农业大数据项目建设方案 目录 项目概述.................................... 6...

【数据结构专栏】动态扩容顺序栈详解

💌 博客内容:顺序栈的原理详解 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准前段,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家:这…...

Linux命令·ifconfig

许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config)。通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使…...

大器晚成我服刘邦,48岁才开始创业

读史使人明智,周末放下手机,静下心来读点人文历史。大器晚成我最佩服刘邦,48岁才开始创业 。在此之前,他是一个出身平凡的农民,早年曾多次失败和受挫。刘邦最后能够战胜项羽,常常让人觉得匪夷所思&#xff…...

AndroidStudio快捷键

动态演示:https://blog.csdn.net/weixin_67276852/article/details/124159843?spm1000.2115.3001.6382&utm_mediumdistribute.pc_feed_v2.none-task-blog-hot-11.pc_personrec&depth_1-utm_sourcedistribute.pc_feed_v2.none-task-blog-hot-11.pc_personre…...

机械硬盘的工作原理

每个磁盘的表面都有高速扫过的记录磁头。 每个磁盘上都覆盖着一层薄薄的微小的磁化金属粒。 数据以一种肉眼无法分辨的形式存在。很多组微小颗粒形成的磁化图案记录形成了数据。每一组,又称之为比特(bit)。 所有微粒都按照自身的磁性排列…...

掌握TypeScript:10个最佳实践提高代码质量

TypeScript 是一种强类型的 JavaScript 超集,提供了很多优秀的工具和语言特性,可以帮助开发者提高代码质量和开发效率。在本文中,我们将介绍 10 个 TypeScript 最佳实践,帮助初级和中级的 Web 前端开发工程师更好地使用 TypeScrip…...

【面试】Kafka面试题

文章目录1、Kafka是什么?2、partition的数据文件(offffset,MessageSize,data)3、数据文件分段 segment(顺序读写、分段命令、二分查找)4、负载均衡(partition会均衡分布到不同broker…...

【C++学习】map和set的使用

🐱作者:一只大喵咪1201 🐱专栏:《C学习》 🔥格言:你只管努力,剩下的交给时间! map和set的使用🌈关联式容器⚡键对值🌈set⚡构造函数⚡增删查改🌈…...

企业电子招投标采购系统——功能模块功能描述+数字化采购管理 采购招投标

​ 功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外…...

4.6--计算机网络之TCP篇之TCP的连接建立--(复习+深入)---好好沉淀,加油呀

1.TCP 三次握手过程是怎样的? TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的 1.一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口,处于 LISTEN 状态 2…...

Pytorch 数据产生 DataLoader对象详解

目录 1、Pytorch读取数据流程 2、DataLoader参数 3、DataLoader,Sampler和Dataset 4、sampler和batch_sampler 5、源码解析 6、RandomSampler(dataset)、 SequentialSampler(dataset) 7、BatchSampler(Sampler) 8、总结 9、自定义Sampler和BatchSampler 研…...

Linux文件系统介绍

一、简介 文件系统就是分区或磁盘上的所有文件的逻辑集合。 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。 不同Linux发行版本之间的文件系统差别很少,主要表现在…...

Java高频必背面试题基础篇02

一、Java 语⾔中关键字 static 的作⽤是什么? static 的主要作⽤有两个: (1)为某种特定数据类型或对象分配与创建对象个数⽆关的单⼀的存储空间。 (2)使得某个⽅法或属性与类⽽不是对象关联在⼀起&#xf…...

蓝桥杯—stm32g431rbt6串口中断和定时器输出pwm学习

目录 串口中断 定时器中断 输出pwm 串口中断 配置异步模式,使能中断,选择波特率。 串口接收中断开启 HAL_UART_Receive_IT(&huart1,data, 3); 回调函数: void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huar…...

zed驱动的安装 及 遇到问题 及 ros标定

安装zed相机驱动 zed驱动官网 下载.run文件 chmod x ZED_SDK_Ubuntu18_cuda10.2_v4.0.1.zstd.run #换自己的版本号 ./ZED_SDK_Ubuntu18_cuda10.2_v4.0.1.zstd.run #换自己的版本号当遇到 zstd: not found … Decompression failed. 重新安装&a…...

打车代驾顺风车货车租运系统开发功能(司机端)

随着社会经济水平的提高,人们对于打车代驾服务要求也不断提高,更多的人愿意在手机上通过打车代驾APP小程序软件来预约叫车,选择打车代驾服务。打车代驾软件开发是基于广大用户的要求而产生的新型服务方式,满足大众预约出行需要&am…...

CT剂量及描述方法详细介绍

CT剂量和普通放射剂量的区别 普通放射剂量分布区域大,但一般集中在皮肤入射表面,用患者入射表面剂量(ESD)来表征射线剂量; CT剂量分布在窄带内,边缘与中心分布不均匀;且属于多层扫描; 1、在理想…...

Spring Boot应用优雅关闭

POM依赖 在需要实现优雅关闭的应用工程中增加下述依赖&#xff1a;部分启动器默认就依赖了Actuator启动器&#xff0c;如&#xff1a;spring-cloud-starter-netflix-eureka-server&#xff0c;那么下述依赖是可以省略的。 <dependency><groupId>org.springframewo…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...