轻松搞定 Git

news2024/11/15 11:14:54

 目录

前言

一、下载

二、安装

三、基本使用

四、git的基本原理

五、通过案例学习git

5.1 创建空的项目文件夹

5.2 初始化git

5.3 创建项目文件

5.4 查看git状态

5.5 添加到暂存区

5.6 提交到本地仓库

5.7 查看git提交到本地仓库的记录

5.8 .gitignore文件

 六、分支

6.1 查看分支

6.2 创建一个新分支

6.3 一个分支新增观察另一个分支的情况

6.4 切换分支

6.5 删除分支

6.6 合并分支

6.7 解决冲突

6.8 强制删除分支

6.9 开发中分支使用原则与流程


只需花几十分钟跟着教程一步一步跟着敲,即可轻松掌握git。

前言

git,开源的分布式版本控制工具,可以有效、高速地处理从很小到非常大的项目版本管理。是目前企业多人协作项目开发中,最常用的版本控制工具。

以前流行svn,就是那个乌龟logo,但是现在很少用了。现在基本都是用git。

一、下载

Git官方下载地址:https://git-scm.com/

二、安装

安装步骤超级简单,安装过程中的选项默认的就可以,直接下一步下一步就可以了。

三、基本使用

安装完成后,点击桌面右键会发现新增了两个Git的菜单。而我们要用的是命令行工具,即Git Bash Here。

我们Linux中的命令,这里面也基本能用。这里就不详细说明了,不会的去复习一下linux基本操作。

cd
ls
ll
touch
mkdir
vim
clear
......

四、git的基本原理

主要围绕这张图展开学习

查看git的配置信息

git config --global --list

 如果第一次安装,我们还需要设置一下

git config --global user.name "yourname"
git config --global user.email "email@xxx.com"

 ok,以上设置完成了。下面我们通过一个案例开始学习git的基本用法

五、通过案例学习git

5.1 创建空的项目文件夹

先创建一个空的项目文件夹

5.2 初始化git

然后初始化git,使它被git管理。

git init

5.3 创建项目文件

根据前面的git原理图,当前pps-mall目录下就被称为工作区。

目前,我们工作区中还没有任何文件,除了.git。

下面,我们随便创建一个文件或者文件夹。

 当然怎么创建随你,可以使用我刚才演示的命令行的方式,也可以用正常普通创建的方式。

5.4 查看git状态

git status

5.5 添加到暂存区

所谓暂存区,前面也说了,就是提交到本地仓之前的缓冲区。

我们通过如下命令,将当前未被跟踪的文件加入缓冲区

git add 文件名

或者使用通配符 . 添加当前路径下的所有内容到暂存区  (未被git管理的除外,这个后面说)

git add .

5.6 提交到本地仓库

git commit -m "说明信息"

5.7 查看git提交到本地仓库的记录

git log

5.8 .gitignore文件

如果我们希望工作区中某些文件不要交给git进行管理,难道我们要一个文件一个文件的git add吗?

这样太麻烦了,依然可以通过git add .完成。

只需要在工作区的根目录再添加一个.gitignore文件,然后在文件中设置好对应需要忽略的文件即可。

忽略以txt结尾的所有文件 

ps:一般在开发中,需要忽略哪些文件都是固定的,一般不需要手写的

然后我们再创建一个txt文件 

查看一下状态,发现只发现了我们.gitignore文件,没有发现我们创建的笔记.txt文件。说明配置的忽略生效了。

 在提交这个.gitignore文件之前,我们再来演示一下修改文件。

 接着我们准备把当前项目的所有内容提交到本地仓库。可以自己想一想步骤,然后再往下看

 六、分支

6.1 查看分支

我们想知道当前有哪些分支,可以使用命令

git branch

 因为还没有新建分支,所以只有一个master分支。

6.2 创建一个新分支

git branch 分支名

 我们再查看一下分支,就出现了我们新增的分支了

 查看一下这两个分支它们分别都有哪些提交

我们发现新增的这个sht-dev本地分支默认继承了当前的master分支。

也就是说,你当前在哪个分支下创建的新分支,新分支就会和当前分支一样。

6.3 一个分支新增观察另一个分支的情况

我们在master分支中,随便创建一个文件,然后提交到本地库。

然后我们查看本地仓库提交记录,发现当前master分支走到了sht-dev分支的上方。

 我们看看当前的工作区目录。

6.4 切换分支

git checkout 分支名

然后我们再查看当前工作区,发现刚刚在master分支下创建的Hello.java文件没有了。

 想一想,如果我们切换回主分支,是否会出现Hello.java文件呢?

答案是肯定的。

 

6.5 删除分支

# 删除分支时,需要做各种检查
git branch -d 分支名
# 不做任何检查,强制删除
git branch -D 分支名

不能删除当前分支,只能删除其他分支

如果要删除当前分支,必须先切换到其他分支,比如我们这里想删除sht-dev分支,可以切换到其他分支比如master分支,然后再执行刚才的删除命令。

6.6 合并分支

我们先创建两个开发分支,模拟各自做各自的任务

然后切换到msj-dev新增它的工作内容到本地库

然后回到master分支,进行合并。

意思是准备将其他分支合并到master分支上。

 

 

 

通过以上案例及说明,每个人开发完了,可以各自合并到主分支上了。当然实际开发中一般不会直接合并到主分支上,而是总的开发分支。这个不同的公司有所区别,根据实际情况而定。

6.7 解决冲突

当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解 决冲突,解决冲突步骤如下:

1. 处理文件中冲突的地方

2. 将解决完冲突的文件加入暂存区(add)

3. 提交到仓库(commit) 冲突部分的内容处理如下所示:

为了不影响看效果,我们先删除分支

然后随便再创建一个分支,比如叫qwl-dev

 然后我们切换到qwl-dev分支,修改一下README.md文件

然后提交到本地库

切换回master分支,准备合并qwl-dev分支

没有问题合并成功。

当然没问题了,合并冲突是双方都有修改才会冲突,master分支根本没动它,所以不会冲突。

下面我们模拟冲突的情况:

切换到qwl-dev分支,将README.md的地址修改为qwl.com并提交到本地库。

然后切换回master主分支,将README.md的地址修改为master.com并提交到本地库。

最后在master分支上,尝试合并qwl-dev分支。看看效果,这时候应该就会出现合并冲突的情况。

我们看看冲突的这个文件

上面head到=号之前的是当前分支的修改,=号到>>>>qwl-dev之间的是qwl-dev分支的修改。

这个时候需要我们手动的处理分支,到底使用哪个由自己定。当然实际开发中,肯定最好是和开发该模块的同事协商决定,防止出问题。

选择好以后,直接去掉留下想要的部分,比如我们就要qwl.com

然后继续先提交到本地仓

这样冲突就解决了,我们看看本地仓提交记录

6.8 强制删除分支

前面提到了,我们可以使用git branch -d 分支名删除某个分支。

这种方式会做写检查。

假如:我们的分支提交到了本地库,但是没有合并,那么我们是无法使用上面的命令删除的。

它会提示你当前分支还没有merge合并,如果你想删除的话,请使用git branch -D 分支名。

举例说明

6.9 开发中分支使用原则与流程

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离 开来进行重大的Bug修改、开发新的功能,以免影响开发主线。

在开发中,一般有如下分支使用原则与流程:

master (生产) 分支

线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;

develop(开发)分支

是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线 要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。

feature/xxxx分支

从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完 成后合并到develop分支。

hotfix/xxxx分支

从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master、test、 develop分支。

还有一些其他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等 等。

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

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

相关文章

mysql基础2——增、删、改、查

文章目录 一、DDL操作1.1 数据库操作1.2 表操作1.3 用户操作1.4 查看命令show1.5 获取帮助 二、DCL操作2.1 用户授权2.2 查看授权2.3 取消授权 三、DML操作3.1 插入insert3.2 查询select3.2.1 常规查询3.2.2 条件查询3.2.3 order by用法3.2.4 group by用法3.2.5 内连接&左连…

输入年月日,日期; 求这个日期在这一年中是第几天

输入年月日,日期; 求这个日期在这一年中是第几天 1.问题 输入年月日,日期; 求这个日期在这一年中是第几天 2.代码 利用Java中的库函数 LocalDate 是Java 8引入的一个日期类,用于表示日期,不包含时间和时区信息 到时候直接调用方法可以获取对应的天数 p…

javaee ajax请求后台 不刷新页面

jsp页面 Reg.jsp <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&qu…

【Python】经过一个点P3的一条直线垂直于已知直线,求交点坐标

一个高中数学题目&#xff0c;已经点P1和点P2构成直线&#xff0c;经过P3点做已知直线的垂线&#xff0c;求垂线与已知直线的交点坐标。 p1 [100, 15] p2 [16, 85] p3 [-50, 100] if p2[0] - p1[0] 0:# p1 p2 构成垂线&#xff0c;那么垂直线就是一条水平线x p1[0]y p3…

kafka3.x 入门 常用命令(二)

创建主题 kafka-topics.sh --bootstrap-server hadoop100:9092 --create --partitions 1 --replication-factor 3 --topic first查看主题列表 kafka-topics.sh --bootstrap-server hadoop100:9092 --list查看主题详情 kafka-topics.sh --bootstrap-server hadoop100:9092 --…

element-ui—textarea多行输入框—字数限制及优化

属性作用 show-word-limit &#xff1a;是否显示数字显示 maxlength“300”&#xff1a;设置最大值 class“public-showWordLimit”&#xff1a; 优化数字的显示的位置 :autosize “{ minRows: 2, maxRows: 8 }” &#xff1a;根据输入字符长度设置动态高度 2.代码案例 <…

vue3+vite安装配置element-plus

配置 element-plus 1. 安装 yarn add element-plus element-plus/icons-vue2. 按需引入插件 yarn add unplugin-vue-components unplugin-auto-import -D3. 配置vite.config.ts // vite.config.ts import AutoImport from unplugin-auto-import/vite import Components fro…

MySQL数据库的主从复制与读写分离

MySQL数据库的主从复制与读写分离 一、主从复制原理1、MySQL支持主从复制类型2、主从复制的原理3、主从复制的架构4、mysql主从复制延迟4、slave从服务器的配置5、验证主从复制的效果6、从服务器的故障问题解决1、遇到Slave_IO_Running:NO的情况2、遇到Slave_SQL_Running&#…

C++ - 哈希的应用

前面的文章中我们讲解了如何进行哈希表的构建以及使用实现的哈希表来模拟实现unordered_map&#xff0c;在本文中我们将继续来讲解一下哈希的应用。 位图 问题引入 首先我们来引入一个问题&#xff1a;给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&am…

Pyside6-第十三篇-布局(最后一章废话-理论篇)

本篇Pyside6的第十三篇&#xff0c;新知识点&#xff0c;布局。 布局的方式有5种。着重挑选几种将 QVBoxLayout&#xff08;垂直布局&#xff09;&#xff1a;按垂直方向排列小部件。 QHBoxLayout&#xff08;水平布局&#xff09;&#xff1a;按水平方向排列小部件。 QGridLay…

关于函数和变量命名

标识符命名基本要求 标识符是指用来识别某个实体的一个符号&#xff0c;在不同的应用环境下有不同的含义。 在计算机编程语言中&#xff0c;标识符是用户编程时使用的名字&#xff0c;用于给变量、常量、函数、语句块等命名&#xff0c;以建立起名称与使用之间的关系。 C语言…

jdk代理和cglib代理(实例推导)

目录 jdk代理和cglib代理&#xff08;实例推导&#xff09;jdk动态代理Cglib动态代理总结 jdk代理和cglib代理&#xff08;实例推导&#xff09; 更深层的探究jdk和cglib动态代理的原理 jdk动态代理 jdk动态代理&#xff08;简单实现&#xff09; 定义一个House的房源类型接口…

05 2024考研408-计算机组成原理第五章-中央处理器学习笔记

文章目录 前言一、CPU的功能与基本结构1.1、CPU的功能1.2、运算器与控制器需要实现功能1.3、运算器的基本结构1.3.1、基本结构构成&#xff08;七个部分&#xff09;1.3.2、各个部件详细介绍①算数逻辑运算单元②通用寄存器组&#xff08;介绍数据通路的基本结构2个&#xff09…

Python教程(1)——python环境的下载与安装

Python教程(1)——python环境的下载与安装 下面是下载并安装Python解释器的具体步骤&#xff0c;非常详细&#xff0c;保姆级别的教程&#xff0c;初学者一步一步的按照操作。 下载python运行环境 访问官方网站 在浏览器中打开Python的官方网站&#xff0c;网址为 https://…

【PyTest】玩转HTML报告:修改、汉化和优化

前言 Pytest框架可以使用两种测试报告&#xff0c;其中一种就是使用pytest-html插件生成的测试报告&#xff0c;但是报告中有一些信息没有什么用途或者显示的不太好看&#xff0c;还有一些我们想要在报告中展示的信息却没有&#xff0c;最近又有人问我pytest-html生成的报告&a…

vue中由 window.open转为二进制流下载 遇到下载之后无法打开或乱码的坑 (responseType: ‘blob‘ 无效)

我项目中 request.js文件用的是 axios请求的. 如果使用 window.open 下载的话没有太多要求了,但是安全性不行. 如果使用 二进制流的话就需要设置: responseType: blob (设置请求返回类型) function exportData(orgId, personName, gender) {return request({url: /console/e…

时钟、时钟域

1.1 时钟 时钟信号是一个按一定电压幅度&#xff0c;一定时间间隔连续发出的脉冲信号。 脉冲信号之间的时间间隔称为周期&#xff1a;在单位时间内所产生的脉冲个数称为频率&#xff0c;频率的标准计量单位是Hz&#xff08;赫兹&#xff09; 每一次时钟脉冲到来&#xff0c;芯…

yolov8-03训练自己的数据集并保存推理结果

目标&#xff1a;将推理结果保存为xyxy形式&#xff0c;并以 pkl 格式保存 主要采取了两种方式&#xff0c;一种是阅读源码&#xff0c;通过CIL的方式保存结果。 一种是在IDE内&#xff0c;通过python代码的形式。 查看推理相关的源码&#xff0c;探索保存结果的相关信息。 在…

PySide6/PyQT 之应用程序最小化到系统托盘

前言 在使用 PySide6/PyQT 时&#xff0c;应用程序默认只会在任务栏展示一个初始图标。很显然&#xff0c;这是不够人性化的。 而在使用微信时候&#xff0c; 按下键盘的Esc&#xff0c;就是隐藏窗口&#xff1b;按下键盘的快捷键 Ctrl Alt W就是显示或隐藏窗口&#xff1…

【Axure高保真原型】多选树穿梭框选择器

今天和大家分享多选树穿梭框的原型模板&#xff0c;左侧多选树选择子级选项后&#xff0c;可以在右侧看到对应的标签&#xff0c;取消选中也会删除对应标签。多选树可以通过选中或取消选中父级自动选中或取消选对应的子级&#xff0c;也可以选中或取消选子级自动反选父级。右侧…