企业级版本管理工具(1)----Git

目录

1.Git是什么       

2.Git的安装和使用

        在Ubuntu下安装命令如下:

        使用git --version查看已安装git的版本:

        使用git init初始化仓库:

        使用tree .git列出目录:

        使用git config命令设置姓名和邮箱:

        加入--global选项在全局设置

        使用git config -l列出基本的配置项:

        使用git add将文件添加到暂存区:

        使用git commit -m “消息” 将修改提交:

        使用git log打印出提交日志:

        使用git log --pretty=oneline打印出好看的提交日志:

3.版本回退

1.git reset

2.git reflog

3.撤销修改

        git diff可以看到最新的修改:​编辑

       git checkout -- [filename]可以撤销工作区的修改

4.删除文件

        git rm 文件可以删除工作区和暂存区的文件:

5.git分支管理

        git branch(-r 列出远程分支  -a 列出全部分支)列出当前本地存在的分支:

        git branch 名字 可以创建一个新分支:

        git checkout 名字 切换当前分支:

        git merge 分支名 将分支合并到当前分支:

        git branch -d 分支名  删除该分支:

1.合并冲突

        git log --graph --abbrev-commit可以显示出提交图示:

2.合并模式

3.合并策略

4.bug分支

5.git branch -D 分支  强制删除分支:

​编辑

6.git push origin 远程分支:本地分支  推送到远程仓库:

7.git pull origin 远程分支:本地分支  从远程仓库拉取到本地:

8..gitignore文件可以在提交时忽略某些文件:

6.操作标签

1.git config --global alias.st 命令名   可以给命令起别名:

2.git tag 标签名 (commit码)(-d选项为删除标签)  为最新一次提交打标签:

3.git show 标签名 查看详细信息:

4.git push origin 标签名(:标签名为删除)  将标签推送到远程:

7.变基


1.Git是什么       

        Git是一个开源的分布式版本控制系统,主要用于管理源代码的版本控制和协作。它可以帮助开发者记录和跟踪代码的修改历史,方便回退到任意版本,支持多人协同开发,解决代码冲突等问题。Git的设计目标是速度快、数据完整性高、分支管理灵活,因此在开发中被广泛使用。

2.Git的安装和使用

        在Ubuntu下安装命令如下:

        使用git --version查看已安装git的版本:

        使用git init初始化仓库:

        使用tree .git列出目录:

        使用git config命令设置姓名和邮箱:

        加入--global选项在全局设置

        使用git config -l列出基本的配置项:

        工作区(Working Directory): 工作区是指你在电脑上看到的文件目录,是你可以直接编辑文件的地方。当你克隆一个仓库到本地时,你的电脑上会有一个工作副本,这里就是你进行开发的地方。你可以添加、编辑、删除文件,但这些更改都不会直接影响版本库,直到你执行提交操作。

        版本库(Repository): 版本库是工作区中的一个隐藏目录(.git),它包含了所有你提交到项目的历史记录,也就是所有的版本信息。版本库是你的项目的核心,它跟踪文件的更改历史,并允许你恢复到之前的任何状态。版本库由以下几个部分组成:

  • 暂存区(Staging Area):也称为索引,是版本库中一个非常重要的部分。在你提交更改之前,你可以将它们添加到暂存区。这允许你对即将进行的提交进行精细控制,只提交你想要的部分。

  • HEAD:在Git中,HEAD是一个特殊的指针,它通常指向你当前所在分支的最新提交。这表示HEAD是你工作副本的历史中的当前状态。

  • 分支和标签:Git的分支和标签是版本库中的引用,它们指向特定的提交。分支通常用于开发、特性添加和bug修复,而标签用于标记发布版本等特定提交。

        使用git add将文件添加到暂存区:

        使用git commit -m “消息” 将修改提交:

        使用git log打印出提交日志:

        使用git log --pretty=oneline打印出好看的提交日志:

3.版本回退

1.git reset

        git reset是 Git 版本控制系统中一个用于重置当前分支的头部(HEAD)到指定状态的操作。这个命令可以用来撤销之前的提交、撤销暂存区的更改,或者将工作区的文件恢复到之前的版本。

git reset [--soft | --mixed | --hard] [commit]
  • --soft:只是将 HEAD 指向指定的提交,不会改变暂存区和工作目录的内容。这意味着你的所有更改仍然在暂存区中,你可以重新提交它们。
  • --mixed(默认选项,可以省略):将 HEAD 指向指定的提交,并且更新暂存区,使其与指定的提交一致,但是工作目录保持不变。这意味着你的更改仍然在工作目录中,但是不在暂存区中。
  • --hard:将 HEAD 指向指定的提交,并且更新暂存区和工作目录,使其与指定的提交完全一致。这是一个危险的操作,因为它会丢弃所有未提交的更改。
工作区暂存区版本库回退
git worldgit worldgit worldgit reset
git worldgit worldgit--soft
git worldgitgit--mixed 默认选项
gitgitgit--hard 慎用

2.git reflog

        git reflog是一个 Git 命令,用于显示 Git 参考日志(reflog),这是一个记录了所有在本地仓库中对分支尖端和HEAD所做的更新的日志。这个命令非常有用,尤其是在您需要恢复丢失的提交或者需要查看最近的操作历史时。

3.撤销修改

        git diff可以看到最新的修改:
工作区暂存区版本库解决方式
xxx code

1.手动撤销

2.git checkout -- [filename]

xxx codexxx codegit reset
xxx codexxx codexxx code前提条件:commit之后没有push
       git checkout -- [filename]可以撤销工作区的修改

4.删除文件

        git rm 文件可以删除工作区和暂存区的文件:

5.git分支管理

        git branch(-r 列出远程分支  -a 列出全部分支)列出当前本地存在的分支:

        HEAD可以指向其他分支,被指向的分支就是当前正在工作的分支

        git branch 名字 可以创建一个新分支:

        git checkout 名字 切换当前分支:

        git merge 分支名 将分支合并到当前分支:

        git branch -d 分支名  删除该分支:

1.合并冲突

        多分支同时对文件做出不同的修改再进行合并时会发生合并冲突,需要手动解决冲突并重新提交。

        git log --graph --abbrev-commit可以显示出提交图示:

2.合并模式

在Git中,有几种可供选择的合并模式:

  1. Fast-Forward合并模式:当要合并的分支是当前分支的直接上游分支,并且在当前分支上没有新的提交时,Git会使用Fast-Forward合并模式。此时直接将当前分支指针指向上游分支的最新提交,合并完成。

  2. 3-way合并模式:当要合并的分支不是当前分支的直接上游分支,或者在当前分支上存在新的提交时,Git会使用3-way合并模式。此模式下,Git会找到当前分支、要合并的分支和它们的共同祖先之间的差异,并生成一个新的合并提交。

  3. 合并冲突:当Git无法自动完成合并时,会发生合并冲突。这通常是由于两个分支在同一个文件的同一行做了不同的修改,或者在同一个文件的同一位置创建了不同的文件等。在发生合并冲突时,Git会停下来,提示用户手动解决冲突。用户需要在冲突标记之间编辑文件,解决冲突后再进行提交。

3.合并策略

在Git中,有几种常见的分支策略可以使用,以下是其中几种:

  1. 主分支策略:主分支通常是用来存放稳定的、发布的代码。在主分支上进行的修改应该是经过严格测试和审核的,保证代码的质量和稳定性。常见的主分支包括mastermain等。

  2. 开发分支策略:为了避免直接在主分支上进行开发,通常会从主分支拉取一个用于开发的分支。这个分支可以命名为devdevelop等。在开发分支上进行的修改可以进行测试和调试,并与其他开发者协同工作。当开发工作完成后,将开发分支合并回主分支。

  3. 功能分支策略:为了同时进行多个功能的开发,可以使用功能分支策略。每个功能都在独立的分支上开发,例如feature/add-userfeature/login等。通过这种方式,不同功能的开发可以并行进行,并且每个功能都可以单独测试和审查。当功能开发完成时,将功能分支合并回开发分支或主分支。

  4. 发布分支策略:当代码达到发布状态时,可以创建一个发布分支,例如release/v1.0。在发布分支上进行最后的测试和准备工作,例如修复bug、更新版本号等。在准备好发布时,将发布分支合并回主分支,并打上对应的标签。

  5. 热修复分支策略:当在发布分支上发现紧急的bug时,可以创建一个临时的热修复分支,例如hotfix/bug-fix。在热修复分支上进行bug修复,并将修复的内容合并回主分支和开发分支。

4.bug分支

        独立的bug分支是一种用于修复代码中的bug的分支策略。当在开发过程中发现bug时,可以创建一个bug分支来专门处理bug修复,而不会影响到正在进行的开发工作。

以下是一个典型的bug分支策略:

  1. 在bug分支上修复bug:当发现一个bug时,从适当的开发分支(如dev)创建一个新的bug分支。可以使用命名约定,如bugfix/issue-numberhotfix/issue-number,其中issue-number是相关问题的编号。

  2. 修复bug:在bug分支上进行必要的代码修改和调试,以修复bug。确保只修改与修复bug相关的代码,并且不会引入新的问题。

  3. 进行测试:在修复bug之后,进行相应的测试,确保修复不会引入新的问题,并且bug已经被成功解决。

  4. 合并回开发分支:一旦bug修复完毕并通过测试,将bug分支合并回原来的开发分支(如dev),确保所有的修复都包含在下一个版本的开发中。

  5. 合并到主分支:如果bug修复也需要包含在当前或下一个发布版本中,可以将修复的bug分支合并回主分支(如master),然后进行发布准备工作。

5.git branch -D 分支  强制删除分支:

6.git push origin 远程分支:本地分支  推送到远程仓库:

7.git pull origin 远程分支:本地分支  从远程仓库拉取到本地:

8..gitignore文件可以在提交时忽略某些文件:

        配置:*名字.后缀 

6.操作标签

1.git config --global alias.st 命令名   可以给命令起别名:

2.git tag 标签名 (commit码)(-d选项为删除标签)  为最新一次提交打标签:

3.git show 标签名 查看详细信息:

4.git push origin 标签名(:标签名为删除)  将标签推送到远程:

7.变基

        在Git中,变基(rebase)是一种用于整理和修改提交历史的操作。它允许将一系列提交记录应用到另一个提交上,创建一条线性的提交历史。

        变基操作的基本语法是 git rebase <目标分支>,它会将当前分支的提交记录重新应用到目标分支上。以下是一些常见的变基操作:

  1. 变基到主分支:当想要将当前分支的提交记录合并到主分支时,可以使用git rebase master。这个操作将把当前分支的提交记录重新应用到主分支上,并将主分支的更新合并到当前分支。

  2. 变基解决冲突:在变基过程中,如果发生冲突,Git会暂停变基操作,让你解决冲突后继续。解决冲突的方法与解决合并冲突类似,使用git add命令将冲突文件标记为已解决,然后继续git rebase --continue

  3. 变基合并提交:在变基过程中,可以选择合并多个提交,并创建一个更简洁的提交历史。使用git rebase -i命令可以打开交互式的变基编辑器,允许你合并、编辑和删除提交。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端】前端数据转化为后端数据

【前端】前端数据转化为后端数据 写在最前面格式化数组代码解释hasOwnProperty是什么&#xff1f; &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限…

【操作系统】引导(Boot)电脑的奇妙开机过程

&#x1f339;&#x1f60a;&#x1f339;博客主页&#xff1a;【Hello_shuoCSDN博客】 ✨操作系统详见 【操作系统专项】 ✨C语言知识详见&#xff1a;【C语言专项】 目录 什么是操作系统的引导&#xff1f; 操作系统的引导&#xff08;开机过程&#xff09; Windows操作系…

渗透测试入门学习——使用python脚本自动识别图片验证码,OCR技术初体验

写在前面 由于验证码在服务端生成后存储在服务器的session中&#xff0c;而标用于标识用户身份的sessionid存在于用户cookie中 所以本次识别验证码时需要用requests.session()创建会话对象&#xff0c;模拟真实的浏览器行为&#xff0c;保持与服务器的会话才能获取登录时服务…

常用排序算法(下)

目录 2.5 冒泡排序 2.6 快速排序 2.6 1 快速排序思路 详细步骤 2.6 2 快速排序递归实现 2.6 3快速排序非递归&#xff1a; 快排非递归的优势 非递归思路 1. 初始化栈 2. 将整个数组的起始和结束索引入栈 3. 循环处理栈中的子数组边界 4. 单趟排序 5. 处理分区后的子…

【论文速看】DL最新进展20241005-Transformer、目标跟踪、Diffusion Transformer

目录 【Transformer】【目标跟踪】【Diffusion Transformer】 【Transformer】 [NeurlPS 2024] Parameter-Inverted Image Pyramid Networks 机构&#xff1a;清华大学、上海AI Lab、上交、港中文、商汤 论文链接&#xff1a;https://arxiv.org/pdf/2406.04330 代码链接&…

C++ | Leetcode C++题解之第454题四数相加II

题目&#xff1a; 题解&#xff1a; class Solution { public:int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {unordered_map<int, int> countAB;for (int u: A) {for (int v: B) {count…

网络基础 【HTTPS】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a; &#x1f4bb;操作环境&#xff1a; CentOS 7.6 华为云远程服务器 &#x1f339;关注我&#x1faf5;带你学习更多Linux知识…

LabVIEW提高开发效率技巧----调度器设计模式

在LabVIEW开发中&#xff0c;针对多任务并行的需求&#xff0c;使用调度器设计模式&#xff08;Scheduler Pattern&#xff09;可以有效地管理多个任务&#xff0c;确保它们根据优先级或时间间隔合理执行。这种模式在需要多任务并发执行时特别有用&#xff0c;尤其是在实时系统…

软件验证与确认实验一:静态分析

目录 1. 实验目的及要求.................................................................................................... 3 2. 实验软硬件环境.................................................................................................... 3 …

JAVA运用中springBoot获取前端ajax提交参数方式汇总

本篇文章主要讲解springboot获取前端提交的参数信息&#xff0c;后端进行接受的常见方法汇总&#xff0c;通过本篇文章你可以快速掌握对表单和连接参数获取的能力。 作者&#xff1a;任聪聪 日期&#xff1a;2024年10月5日 一、delete、get等url参数获取方式 前台提交&#xf…

数字图像处理:空间域滤波

1.数字图像处理&#xff1a;空间域滤波 1.1 滤波器核&#xff08;相关核&#xff09;与卷积 图像上的邻域计算 线性空间滤波的原理 滤波器核&#xff08;相关核&#xff09;是如何得到的&#xff1f; 空间域的卷积 卷积&#xff1a;滤波器核与window中的对应值相乘后所有…

【Echarts】折线图和柱状图如何从后端动态获取数据?

&#x1f680;个人主页&#xff1a;一颗小谷粒 &#x1f680;所属专栏&#xff1a;Web前端开发 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 1.1 前端数据分析 1.2 数据库表分析 1.3 后端数据处理 1.4 前端接收数据 继上一篇文章&…

MySQL 查询优化器

文章目录 控制查询计划optimizer_prune_leveloptimizer_search_depth 优化器参数优化器提示索引提示成本模型server_costcost_name engine_cost 控制查询计划 https://dev.mysql.com/doc/refman/8.4/en/controlling-query-plan-evaluation.html 在执行SQL前会根据优化器选择执…

C++_智能指针详解

什么是智能指针&#xff1f;为什么要有智能指针&#xff1f;到目前为止&#xff0c;我们编写的程序所使用的对象都有着严格定义的生命周期。比如说&#xff0c;全局对象在程序启动时分配&#xff0c;在程序结束时销毁&#xff1b;再比如说局部static对象在第一次使用前分配&…

electron-builder 首次执行报错问题解决

假日想研究一下 react electron 的使用&#xff0c;结果发现首次打包疯狂报错&#xff0c;研究了一下之后才发现是第一次的话 electron-builder 会从外面下载依赖包到我们系统中&#xff0c;由于某种力量导致压缩包无法下载或者是下载过慢导致失败&#xff0c;要解决其实也简单…

初学51单片机之I2C总线与E2PROM二

总结下上篇博文的结论&#xff1a; 1&#xff1a;ACK信号在SCL为高电平期间会一直保持。 2&#xff1a;在字节数据传输过程中如果发送电平跳变&#xff0c;那么电平信号就会变成重复起始或者结束的信号。&#xff08;上篇博文的测试方法还是不能够明确证明这个结论&#xff0…

【C++】入门基础介绍(上)C++的发展历史与命名空间

文章目录 1. 前言2. C发展历史2. 1 C版本更新特性一览2. 2 关于C23的一个小故事: 3. C的重要性3. 1 编程语言排行榜3. 2 C在工作领域中的应用 4. C学习建议和书籍推荐4. 1 C学习难度4. 2 学习书籍推荐 5. C的第一个程序6. 命名空间6. 1 namespace的价值6. 2 namespace的定义6. …

首届中美可持续发展峰会在加州圆满举行,引领国际绿色发展新方向

现场嘉宾与(部分)与会人员大合影 2024年8月18日,由美国领创商业联盟(Youth Entrepreneur Business Alliance, YEBA)主办的首届中美可持续发展峰会(Sino-American Symposium on Sustainable Development)在加州森林湖市(Lake Forest)盛大举行。此次峰会吸引了数百名来自中美两国…

HTML+CSS之表格(15个案例+代码+效果图+素材)

目录 1.table标签的border属性 案例:制作一个带边框的表格 1.代码 2.效果 2.table标签的cellspacing属性 案例:制作一个带边距的表格 1.代码 2.效果 3.table标签的cellpadding属性 1.代码 2.效果 4.table标签的width和height属性 案例:指定宽高的表格 1.代码 2.效果 5.table标签…

全新芒果YOLOv10改进135:最新注意力机制EMA:即插即用,具有跨空间学习的高效多尺度注意力模块,ICCASSP 2023

💡本篇内容:芒果YOLOv10改进135:最新注意力机制EMA:即插即用,具有跨空间学习的高效多尺度注意力模块,ICCASSP 2023 **具有跨空间学习的高效多尺度注意力模块EMA | 即插即用 该模块通常包括多个并行的注意力子模块,每个子模块关注于输入数据的不同尺度或分辨率。这些子模块…