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

Git(分布式版本控制系统)、Gitlab、分支、分支冲突

目录

1.Git概述

2.Git的功能特性

3.Github社区和Gitlab

1.Github社区

2.Gitlab

4.Git的安装及配置

1.Git安装

2.配置Git环境

3.常用指令

4. 建立git仓库

1.创建一个目录

2.初始化当前目录仓库

3.查看隐藏文件

4.新建文件并添加到缓存

5.提交文件到仓库

6.查看历史提交信息

 7.补充知识

5.分支

1.分支的概念

2.分支的管理---查看、新增、切换、合并及删除


1.Git概述

        Git 是一种分布式版本控制系统,用于跟踪和管理代码的变更。它是由 Linus Torvalds 创建的,最初被设计用于 Linux 内核的开发。Git 允许开发 人员跟踪和管理代码的版本,并且可以在不同的开发人员之间进行协作。 Github 用的就是 Git 系统来管理它们的网站,Github 是一个社区,Git 是 一个服务系统,Github 只支持 Git 分布式系统,所以故名成为 Github。

Git 的主要功能包括:

        1. 版本控制:Git 可以跟踪代码的变更,并且可以回滚到任何一个版本。

        2. 分支管理:Git 支持多个分支,可以让不同的开发人员在不同的分支上 进行开发,然后再合并到主分支上。

        3. 分布式:Git 是分布式的,意味着每个开发者都可以在自己的本地分支 上进行操作,不需要依赖于中央服务器。

        4. 团队协作:Git 支持多人协作,可以让不同的开发人员在同一个项目上 进行协作。

        5. 使用 Git 进行版本控制可以提高开发效率,减少代码冲突,并且可以更 好地管理代码变更。

2.Git的功能特性

        Git 是关注于文件数据整体的变化,直接会将文件提交时的数据保存成快 照,而非仅记录差异内容,并且使用SHA-1加密算法保证数据的完整性。主要功能如下:

        1. 克隆数据库版本: 从服务器上克隆版本数据库(包括代码和版本信息)到本机上;

        2. 提交代码: 在本机上自己创建的分支上提交代码;

        3. 合并分支: 在本机上合并分支;

        4. 拉取合并分支: 新建一个分支,把服务器上最新版的代码 Fetch 下来, 然后跟自己的主分支合并;

        5. 代码冲突解决: 一般开发者之间解决冲突的方法,开发者之间可以使用 pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

3.Github社区和Gitlab

1.Github社区

        GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为 唯一的版本库格式进行托管,故名 GitHub。GitHub 可以提供给用户空间 创建 Git 仓储,保存用户的一些数据文档或者代码等。

         GitHub 可以托管各种 Git 库,并提供一个 Web 界面,但与其它像 SourceForge 或 Google Code 这样的服务不同,GitHub 的独特卖点在于 从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点 击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代 码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。

2.Gitlab

        GitLab 是一个基于 Git 的项目管理软件用于仓库管理系统的开源项目。使 用 Git 作为代码管理工具,并在此基础上搭建起来 Web 服务。

        GitLab 主要针对软件开发过程中产生的代码和文档进行管理,支持 group 和 project 两个维度进行代码和文档的管理。其中,group 是群组,可以有 多个 project;project 是工程项目,一个 project 中可能包含多个 branch,意为每个项目中有多个分支,分支间相互独立,不同分支可以进 行归并。GitLab 一站式 DevOps 平台,加速和优化软件开发全生命周期。

4.Git的安装及配置

1.Git安装
[root@git ~]# yum -y install git
[root@git ~]# rpm -qa git   #查看主要配置文件
2.配置Git环境

参数:

        config:配置git环境

        --global:长命令表示配置整个git环境

[root@git yy000]# git config --global user.name=qingtang   #配置用户名
[root@git yy000]# git config --global user.email 18893086294@163.com   #配置邮箱
3.常用指令

这些是各种场合常见的Git命令:

开始一个工作区(参见:git help tutorial)  

clone     克隆仓库到一个新目录  

init     创建一个空的 Git 仓库或重新初始化一个已存在的仓库

在当前变更上工作(参见:git help everyday)  

add       添加文件内容至索引  

mv       移动或重命名一个文件、目录或符号链接  

restore   恢复工作区文件  

rm       从工作区和索引中删除文件

检查历史和状态(参见:git help revisions)  

bisect   通过二分查找定位引入 bug 的提交  

diff     显示提交之间、提交和工作区之间等的差异  

grep     输出和模式匹配的行  

log       显示提交日志  

show     显示各种类型的对象  

status   显示工作区状态

 扩展、标记和调校您的历史记录  

branch   列出、创建或删除分支  

commit   记录变更到仓库  

merge     合并两个或更多开发历史  

rebase   在另一个分支上重新应用提交  

reset     重置当前 HEAD 到指定状态  

switch   切换分支  

tag       创建、列出、删除或校验一个 GPG 签名的标签对象

 协同(参见:git help workflows)  

fetch     从另外一个仓库下载对象和引用  

pull     获取并整合另外的仓库或一个本地分支  

push     更新远程引用和相关的对象

4. 建立git仓库
1.创建一个目录

这个新创建的目录作为git的工作目录

[root@git ~]# mkdir /yy000
2.初始化当前目录仓库

进入到工作目录中初始化项目

[root@git ~]# cd /yy000/
[root@git yy000]# ls
[root@git yy000]# git init
初始化空的 Git 版本库于 /yy000/.git/
3.查看隐藏文件
[root@git yy000]# ls -a   #-a选项显示目录下的隐藏文件
.  ..  .git
[root@git yy000]# cd .git/
[root@git .git]# ls
branches  config  description  HEAD  hooks  info  objects  refs
4.新建文件并添加到缓存
[root@git yy000]# vim Test.java   #创建并编写一个java文件
pubilc class Test {public static void main(String[]args){System.out.println("hello world")}
}[root@git yy000]# git add Test.java    #将文件添加到缓存
5.提交文件到仓库

使用-m命令来简写描述我们的信息,如果不使用-m,会调用终端的注释编 辑器来输入描述信息,而不建议使用注释编辑器,因为注释编辑器比较难 用,不舒服。

[root@git yy000]# git commit -m "新增了一个Test.java文件,这是新建的"   #放到仓库,并给放进去的代码做一个说明

git commit 会为我们生成40位的哈希值,用于作为 id,并把刚刚用 git add 添加到提交缓存区里的文件提交到本地仓库中,便于我们回滚,至此,这个 文件就已经添加到本地仓库中了,同时本地仓库也迭代了一个版本。

6.查看历史提交信息
[root@git yy000]# git log
commit c3080ca47fe3cd8d07045ebf26cf83d16654ab26   #40位哈希算法算出的id
Author: root <18893086294@163.com>   #提交者
Date:   Thu Jul 25 10:51:01 2024 +0800   #提交时间
 7.补充知识

        1. 工作目录:指当前正在进行修改的文件夹或目录。在这个目录中,开发 者可以添加、修改、删除文件,然后将这些修改提交到Git中。

        2. 暂存区:一个中间区域,它位于工作目录和版本库之间。在这里,开发 者可以将修改后的文件添加到暂存区,以便在提交时将这些修改打包成 一个提交 (也称为“提交”或“提交记录”)。

        3. 版本库:存储所有提交历史记录的地方。每个提交都包含一个快照 (即 项目的状态),以及一个指向上一个提交的引用。开发者可以从版本库中 检出历史记录中的任何一个版本,并在工作目录中查看它的状态。

5.分支

1.分支的概念

        每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。 HEAD 严格来说不是指向提交,而是指向master,而 master才是指向提交 的,所以,HEAD指向的就是当前分支。

开始的时候,master分支是一条线,Git 用 master 指向最新的提交,再用 HEAD指向 master,就能确定当前分支,以及当前分支的提交点。每次提 交,master分支都会向前移动一步,这样,随着你不断提交,master分支 的线也越来越长。

2.分支的管理---查看、新增、切换、合并及删除

1.查看分支,有几行就表示有几个分支,被*标注的分支表示当前所处的分支

[root@git yy000]# git branch
* master

2.新增分支

第一种方式创建分支:git checkout 分支名称

第二种方式创建分支并跳转到新创建的分支:git checkout -b 分支名称

首先,确保你当前在主分支(通常是master或main分支)上工作。接下来在主分支上新建分支:

[root@git yy000]# git branch abranch
[root@git yy000]# git checkout -b bbranch
切换到一个新分支 'bbranch'
[root@git yy000]# git branchabranch
* bbranchmaster

3.切换分支

格式:git checkout 分支名称

[root@git yy000]# git checkout cbranch
M	Test.java
切换到分支 'cbranch'

4.合并分支

需要将更改合并回主分支。首先,切换回主分支,接下来使用一些命令:

[root@git yy000 ~]# git merge abranch

合并完成后,其他分支内容会被合并到master上。 

5.删除分支

如果你想删除不再需要的分支,可以使用以下命令删除分支:

[root@git yy000 ~]# git branch -d abranch
[root@git yy000~]# git branch -D abranch   

 如果你想强制删除分支(即使该分支尚未合并),可以使用以下删除分支的命令,但需要将d选项改变为D选项。

相关文章:

Git(分布式版本控制系统)、Gitlab、分支、分支冲突

目录 1.Git概述 2.Git的功能特性 3.Github社区和Gitlab 1.Github社区 2.Gitlab 4.Git的安装及配置 1.Git安装 2.配置Git环境 3.常用指令 4. 建立git仓库 1.创建一个目录 2.初始化当前目录仓库 3.查看隐藏文件 4.新建文件并添加到缓存 5.提交文件到仓库 6.查看历…...

dockerfile部署镜像 ->push仓库 ->虚拟机安装建木 ->自动部署化 (详细步骤)

目录 创建私服仓库 vi /etc/docker/daemon.json vim deploy.sh判断脚本内容 创建 建木 后端部署 命名空间 设置密码用户名 创建git仓库 gitignore文件内容 图形项目操作 git maven docker镜像 点击流程日志 vim /etc/docker/daemon.json 执行部署脚本 ip 开发…...

Android串口开发及读取完整数据的解决方法

串口发送实质就是向串口设备写入、读取字节流&#xff0c;和文件的操作很相似,安卓官方已经提供了android-serialport-api,在开源社区上也有很多衍生项目可以借鉴&#xff0c;本文介绍其中一种用法。 添加依赖 在Module下的 build.gradle 中添加: implementation com.aill:A…...

java之对象向下转型

java中&#xff0c;向下转型是为了重新获得因为向上转型而丢失的子类特性。在先下转型前&#xff0c;必须先进行向上转型。 语法格式如下 父类类型 父类对象子类实例 子类类型 子类对象&#xff08;子类&#xff09;父类对象 示例代码如下 class Animal01 {public void sh…...

ElasticSearch核心之DSL查询语句实战

什么是DSL&#xff1f; Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。 DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。目前常用的框架查询方法什么的底层都是构建DSL语句实现的&#xff0c;所以你必…...

Axure中继器:数据动态展示的强大工具

在Axure RP这一强大的原型设计工具中&#xff0c;中继器&#xff08;Repeater&#xff09;无疑是一颗璀璨的明珠。它以其独特的功能和广泛的应用场景&#xff0c;成为设计师在创建数据密集型原型时的首选。本文将深入探讨Axure中继器的特点、使用方式及其在数据动态展示中的重要…...

QT--聊天室

一、设计要求 用QT做一个聊天室&#xff0c; 制作一个服务器和客户端。可以进行注册、登录&#xff0c; 登陆成功后可以使用昵称进行发送、接收消息。 能根据昵称、聊天内容查询历史记录&#xff0c;也可以查询全部聊天记录。 。 二、客户端三级ui界面 三、项目代码 //在…...

Javascript前端面试基础4【每日学习并更新10】

同步和异步的区别 同步:浏览器访问服务器请求&#xff0c;用户看得到页面刷新&#xff0c;重新发请求等请求完&#xff0c;页面刷新,新内容出现&#xff0c;用户看到新内容,进行下一步操作异步:浏览器访问服务器请求&#xff0c;用户正常操作&#xff0c;浏览器后端进行请求。等…...

社区团购系统搭建开发,前端uniapp。社区团购搭建开发定制

目录 前言&#xff1a; 一、社区团购系统有哪些功能&#xff1f; 二、社区团购管理端 三、社区团购的基本流程如下&#xff1a; 总结 &#xff1a; 前言&#xff1a; 社区团购是一种以社区为单位进行的集体购物模式。这种模式利用了互联网平台来组织同一社区内的居民一起购…...

node+mysql+layui+ejs实现左侧导航栏菜单动态显示

nodemysqllayuiejs实现左侧导航菜单动态显示 实现思路效果图数据库技术栈代码实现main.html&#xff08;前端首页页面&#xff09;查询资源菜单方法 jsapp.js配置ejs模板 node入门到入土项目实战开始&#xff0c;前端篇项目适合node小白入门&#xff0c;因为我也是小白来学习no…...

FRP配置内网穿透52版本以上适用

简述 适用frp配置内网穿透来说我们需要进行简单的区分&#xff0c;具有公网IP的服务器我们简称为服务端&#xff0c;内网的服务器我们可以简称为客户端&#xff0c;frp需要针对不同的服务器配置不同的文件 下载安装包 Linux下载地址 https://github.com/fatedier/frp/relea…...

IFM易福门LR3000LR3300液位传感器操作说明

IFM易福门LR3000LR3300液位传感器操作说明...

【Python大语言模型系列】基于阿里云人工智能平台采用P-Tuning v2微调ChatGLM2-6B大模型(完整教程)

这是我的第331篇原创文章。 一、引言 P-Tuning 是一种对预训练语言模型进行少量参数微调的技术。所谓预训练语言模型&#xff0c;就是指在大规模的语言数据集上训练好的、能够理解自然语言表达并从中学习语言知识的模型。P-Tuning 所做的就是根据具体的任务&#xff0c;对预训练…...

基于Spring boot + Vue的加油站系统

项目名称&#xff1a;加油站系统 作者的B站地址&#xff1a;程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csdn地址&#xff1a;程序员云翼-CSDN博客 1.项目技术栈&#xff1a; 前后端分离的项目 后端&#xff1a;Springboot MybatisPlus 前端&#xff1a;Vue…...

️RPC协议 --基于TCP实现RPC通信

RPC 协议介绍 RPC(Remote Procedure Call,远程过程调用)协议是一种通信协议,允许一个程序调用另一个地址空间(通常是在网络上)的过程或函数,而不需要显式地处理细节如数据序列化和网络通信。它允许开发人员编写分布式应用程序,就像编写本地应用程序一样。 关键特点和组…...

android(安卓)最简单明了解释版本控制之MinSdkVersion、CompileSdkVersion、TargetSdkVersion

1、先明白几个概念 &#xff08;1&#xff09;平台版本&#xff08;Android SDK版本号&#xff09; 平台版本也就是我们平时说的安卓8、安卓9、安卓10 &#xff08;2&#xff09;API级别&#xff08;API Level&#xff09; Android 平台提供的框架 API 被称作“API 级别” …...

Redis缓存穿透、击穿和雪崩的理解和解决思路

Redis的缓存穿透 缓存穿透是指那些查询请求所要获取的数据既不在缓存&#xff08;Redis&#xff09;中&#xff0c;也不在数据库&#xff08;例如&#xff1a;MySQL&#xff09;中&#xff0c;因此每次请求都会直接访问数据库。这种情况通常由以下几种情形引起&#xff1a; 恶…...

ReactHooks(完结)

上期戳here ReactHooks[三] 一.memo 函数1.1 语法格式 二. useMemo2.1 问题引入2.2 语法格式2.3 使用 useMemo 解决刚才的问题 三.useCallback3.1 useMemo和useCallback区别3.2 语法格式 四.useTransition4.1 问题引入4.2 语法格式4.3 使用 isPending 展示加载状态4.4 注意事项…...

【数据中台】大数据管理平台建设方案(原件资料)

建设大数据管理中台&#xff0c;按照统一的数据规范和标准体系&#xff0c;构建统一数据采集&#xfe63;治理&#xfe63;共享标准、统一技术开发体系、统一接口 API &#xff0c;实现数据采集、平台治理&#xff0c;业务应用三层解耦&#xff0c;并按照统一标准格式提供高效的…...

UE5+OpenCV配置(Windows11系统)

一、概述 因为需要在UE5中使用OpenCV这些工具进行配置&#xff0c;所以在网络上参考借鉴一些资料进行配置。查询到不少的资料&#xff0c;最后将其配置成功。在这里顺便记录一下自己的配置成功的过程。 二、具体过程 &#xff08;一&#xff09;版本 使用Windows11系统、UE5.…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...