您的位置:首页 > 教育 > 培训 > 【C++拓展(二)】Git的企业级使用指南(上)

【C++拓展(二)】Git的企业级使用指南(上)

2024/10/6 1:37:03 来源:https://blog.csdn.net/m0_61982936/article/details/142096542  浏览:    关键词:【C++拓展(二)】Git的企业级使用指南(上)

💓博主CSDN主页:杭电码农-NEO💓

⏩专栏分类:C++从入门到精通⏪

🚚代码仓库:NEO的学习日记🚚

🌹关注我🫵带你学习C++
  🔝🔝


C++拓展

  • 1. 前言
  • 2. 初识Git的分区
  • 3. Git本地管理常用指令
  • 4. Git的分支管理
  • 5. 小结

1. 前言

之前在鹅厂实习时, 接到一个在老项目拓展功能的任务, 同事告诉我要在Git创建什么分支写代码, 我当时就懵了, 我只会git三板斧: add,commit,push, 什么是分支我还真不知道. 于是我下来恶补了一下, Git在企业实际项目中的使用手册.

本章重点:

本篇文章着重讲解, Git在本地使用时的一些操作和技巧, 包括.git文件的分析, Git分支管理的理解以及Git的工作区,暂存区,以及版本库的理解


2. 初识Git的分区

首先, 我们要使用Git需要先安装. 安装好后, 可以单独创建一个目录来进行git的验证测试. 仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来。

使用指令: git init

之后,可以在当前目前下看见.git文件:

在这里插入图片描述

首先, 我们要先理解git的分区策略

  • 和.git文件夹在同一目录的文件处于工作区
  • .git文件中有暂存区和版本库

在这里插入图片描述

我们写代码是在工作区, 这没问题, 当我们使用add指令后, 代码会被放在stage暂存区当中, 而当我们使用了commit才会真正意义上的将代码放入版本库,也就是我们的master中,这一个结构,我们也可以在.git文件下窥探到

在这里插入图片描述

对于GIT而言,现在来谈一下他的原理, 首先, git目录下有一个obj目录, 它是一个对象库, Git跟踪的是修改,当工作区代码修改后,会将修改内容写入obj库中的一个新的git对象中, 那么暂存区和所谓的版本库其实并不是存储的是数据本身, 而是存储obj库的索引,以便能快速定位修改.其次,.git中有一个HEAD指针,它指向我们的版本库master,而master指向的是最新的一次提交记录,而最新的提交记录又会指向上一次的提交,以此形成一个链式结构

在这里插入图片描述


3. Git本地管理常用指令

相信大家肯定也熟悉add和commit指令了
这里就直接跳过, 将其他的常用指令:

查看工作区和暂存区的代码差异

使用指令: git diff [file]

查看版本库和工作区差异

使用指令: git diff head -- [file]

查看提交记录

使用指令: git log

在这里插入图片描述

git版本回滚
git的回退有些复杂, 大致是用git reset加选项实现, 并且我们要先理解一点, 版本回退指的是将版本库中的内容进行回退,工作区和暂存区的内容是否回退由参数决定

在这里插入图片描述

不仅如此, 在选择回退版本时, 可以直接输入需要回退的提交ID, 即可直接回退到指定版本, 但是有一种情况非常难受, 比如当工作区,暂存区,版本库全部回退到前5个版本后,现在我想要回退到前四个版本, 但是版本库也回退到第五个版本了, 用git log已经找不到第四个版本的提交ID了,这下咋办?

使用指针: git reflog 记录每一次提交的命令,利用命令中的ID,再次回退到想要的版本

在这里插入图片描述

删除文件

使用指令: git rm [file]

rm指令只是将工作区文件删除
git rm芝麻会将暂存区也删除

撤销修改
情况一: 撤销工作区代码

使用指令: git checkout -- [file] 将工作区文件恢复到最近一次add或commit的状态

情况二: 撤销工作区和暂存区代码

使用指令: git reset -- mixed ... 将暂存区撤销后变成情况一

情况三: 三个区都回退(前提:commit后不push)
(撤销的目的就是为了不影响原创仓库)

使用指令: git reset -- hard ...


4. Git的分支管理

之前用的master,成为主分支, 但是在公司参与实际项目时, 不可能直接在主分支上写代码, 于是, 才有了分支管理, 分支管理就像你在学习前进行了分身,学完后在和分身合并

在这里插入图片描述

可以将每次提交串成一个时间线,此时间线就是一个分支,当我们再创建一个分支后, 会出现以下情况:

在这里插入图片描述

查看当前分支:

使用指令: git branch 星号所在行代表当前HEAD指针指向的分支

在这里插入图片描述

创建分支:

使用指令: git branch [分支名]

切换分支:

使用指令: git checkout [分支名]

注意, git checkout [分支名]可用于直接创建一个分支, 切换后, HEAD指针也就指向了dev分支

在这里插入图片描述

我们可以在dev分支中创建文件,编写代码,写好后我们切换到master分支,会发现工作区的文件和代码并没有改变,在dev分支合并之前,master主分支都不会收到影响,这是因为dev分支的新提交对于master分支来说是完全不可见的

在这里插入图片描述


5. 小结

对于git的使用而言, 掌握分支管理是及其重要的, 因为在公司实际开发项目时, 我们的master主分支往往是给顾客提供的服务,是正在运行的代码,当我们的master分支出现bug,或者有一些新的功能要进行添加到服务中时,我们往往会创建新分支来完成任务,目的是为了不影响主分支的正常运行!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com