入职Java,不会git被开除了。。。
入职Java,不会git被开除了。。。
文章目录
- 入职Java,不会git被开除了。。。
- 前言
- 一、Git是什么?
- 二、Git的核心概念
- 三、Git的工作流程
- 四、Git的常用命令
- 五、总结
🌈你好呀!我是 山顶风景独好
💝欢迎来到我的博客,很高兴能够在这里和您见面!
💝希望您在这里可以感受到一份轻松愉快的氛围!
💝不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!
前言
- 在一个繁华的都市中,李华怀揣着对Java编程的热爱和憧憬,成功应聘了一家知名的科技公司。他对于即将到来的职场生活充满了期待,希望能够在那里施展自己的才华,实现自己的职业梦想。
- 然而,就在他入职的第一天,却发生了一件让他意想不到的事情。公司为了让他更快地融入团队,安排了一场技术分享会,要求他和其他新入职的同事一起参与。在分享会上,团队领导提到了Git这个重要的版本控制系统,并询问大家是否熟悉其操作。
- 李华顿时感到一阵紧张,因为他之前并没有接触过Git。虽然他在Java编程方面有着扎实的基础,但对于版本控制这个领域却是一片空白。他试图掩饰自己的不安,但内心却充满了忐忑。
- 分享会结束后,团队领导私下里找到李华,希望他能够在短时间内掌握Git的基本操作,因为公司非常注重团队协作和版本控制。李华虽然答应了,但内心却感到无比的压力。
- 在接下来的几天里,李华拼命地学习Git的相关知识,但由于缺乏实践经验,他始终无法熟练掌握。每当他试图将代码提交到仓库时,总会遇到各种各样的问题。这让他感到非常沮丧和焦虑。
- 有一天,团队领导突然宣布要进行一次代码审查,并要求每个人都将自己的代码提交到Git仓库中。李华感到自己的末日就要来临了,因为他知道自己根本无法在规定的时间内完成这个任务。
- 果然,在提交代码的过程中,李华遇到了一个严重的问题,他的代码无法被正确提交到仓库中。他尝试了各种方法,但都没有成功。这时,团队领导走了过来,询问他的进展情况。
- 李华无奈地坦白了自己的困境,并表达了自己的愧疚和不安。他本以为会遭到严厉的批评或指责,但出乎意料的是,团队领导并没有责怪他,而是耐心地为他讲解了Git的基本操作和注意事项。
- 在团队领导的帮助下,李华终于成功地将代码提交到了Git仓库中。虽然这次经历让他感到非常尴尬和羞愧,但他也深刻地认识到了自己的不足和需要改进的地方。
- 然而,不幸的是,由于李华在Git方面的技能不足已经严重影响到了团队的工作效率和项目进度。在经过一段时间的观察和评估后,公司最终做出了一个艰难的决定:将李华解雇。
- 虽然这个结果让李华感到非常失落和沮丧,但他也意识到这是一个重要的教训。他明白了在职场中不仅要掌握专业技能,还要具备快速学习和适应新环境的能力。他决定在离开这家公司之前,认真反思自己的不足并努力学习Git和其他相关技术知识,为将来的职场生涯打下坚实的基础。
一、Git是什么?
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。它最初由Linus Torvalds为了管理Linux内核的开发而设计,后来被广大开发者所采用并广受欢迎。Git的核心是一个数据库,它保存了项目的每一次更改,并且可以通过这些更改来创建分支、合并代码、查看历史记录等。
二、Git的核心概念
- 仓库(Repository)
Git仓库是存储项目所有版本历史记录的地方。它包含了项目的所有文件、目录、提交信息、分支、标签等。Git仓库可以位于本地计算机上,也可以托管在远程服务器上,如GitHub、GitLab等。- 工作区(Working Directory)
工作区是开发者进行日常开发的地方,它包含了项目的实际文件。当开发者从Git仓库中检出(checkout)一个分支时,该分支上的文件会被复制到工作区。开发者在工作区中对文件进行编辑、添加或删除等操作。- 暂存区(Staging Area 或 Index)
暂存区是Git用来准备提交的一个区域。当开发者对工作区的文件进行修改后,这些修改并不会立即被提交到Git仓库中。相反,开发者需要将修改的文件添加到暂存区,以便在后续的提交中包含这些更改。通过git add命令,开发者可以将工作区的文件添加到暂存区。- 提交(Commit)
提交是Git中的基本操作,它代表了一次版本的保存记录。每次提交会生成一个唯一的SHA-1哈希值,用于标识该次提交。提交包含了一条提交信息,记录了该次提交的目的、作者、时间等信息,以及指向上一次提交的指针。提交操作将暂存区的更改打包成一个快照,并将其添加到Git仓库的历史记录中。通过git commit命令,开发者可以将暂存区的更改提交到Git仓库中。- 分支(Branch)
Git中的分支用于同时进行多个任务、多个版本的开发。主分支一般是master或main,用于保存最终的稳定版本。开发者可以创建新的分支来开发新功能或修复bug,而不会干扰到其他分支的开发工作。通过git branch命令,开发者可以查看、创建和删除分支。通过git checkout命令,开发者可以切换到不同的分支进行开发工作。- 合并(Merge)
合并是将一个分支的修改内容合并到另一个分支的过程。当一个分支的开发完成或需要与其他分支(如主分支)同步时,可以通过合并操作将其修改内容合并到目标分支中。Git使用三方合并(three-way merge)算法来自动合并代码冲突。通过git merge命令,开发者可以将一个分支的更改合并到当前分支中。- 分布式版本控制
Git是一个分布式版本控制系统,这意味着每个开发者都可以在自己的本地计算机上拥有一个完整的Git仓库。本地仓库包含了项目的所有历史记录、分支、标签等。开发者可以在本地仓库上进行开发工作,并与其他开发者的本地仓库进行同步。通过git clone命令,开发者可以从远程仓库克隆一个完整的项目到本地计算机上。通过git push和git pull命令,开发者可以将本地的更改推送到远程仓库,或从远程仓库拉取最新的更改。
三、Git的工作流程
- 初始化仓库:使用git init命令创建一个新的Git仓库,或者在已有的代码库上执行该命令将其转换为Git仓库。
- 添加文件:使用git add命令将文件添加到暂存区(staging area)。暂存区是Git用来准备提交的一个区域。
- 提交更改:使用git commit命令将暂存区的更改提交到Git仓库中。每次提交都会生成一个唯一的哈希值作为标识符。
- 查看历史记录:使用git log命令查看项目的提交历史记录。这可以帮助我们了解项目的变更情况,以及谁在什么时间做了哪些更改。
- 创建分支:使用git branch命令创建新的分支。分支是Git用来支持并行开发的一种机制。我们可以在不同的分支上同时进行不同的开发工作,而不会相互干扰。
- 切换分支:使用git checkout命令切换到不同的分支。这可以帮助我们在不同的开发任务之间快速切换。
- 合并分支:当我们在一个分支上完成开发工作后,可以使用git merge命令将其合并到主分支或其他分支上。这可以帮助我们将不同开发者的代码整合在一起,形成完整的项目。
四、Git的常用命令
- 初始化与配置
- git init: 初始化一个新的Git仓库。
- git config: 获取和设置仓库或全局选项。
- 克隆与添加
- git clone: 克隆一个仓库到一个新目录。
- git add: 添加文件内容到索引。
- 提交与同步
- git commit: 记录更改到仓库。
- git push: 推送本地更改到远程仓库。
- git pull: 从远程仓库获取并集成更改。
- 分支与合并
- git branch: 列出、创建或删除分支。
- git checkout: 切换到指定分支或恢复工作区文件。
- git merge: 合并一个或多个分支到当前分支。
- 查看与比较
- git status: 显示工作目录和暂存区的状态。
- git log: 显示提交历史。
- git diff: 显示尚未暂存的更改。
- git show: 显示各种类型的对象。
- 撤销与恢复
- git reset: 重置当前HEAD到指定状态。
- git revert: 创建一个新的提交来撤销某次提交。
- git rm: 从工作区和索引中删除文件。
- 远程仓库
- git remote: 管理远程仓库。
- git fetch: 从另一个仓库或本地分支获取分支与/或标签。
- 标签
- git tag: 列出、创建或删除标签。
- 其他
- git stash: 保存和恢复工作进度。
- git blame: 显示文件每一行的最后修改信息。
- git show-branch: 显示分支列表及其提交。
- git cherry-pick: 选择一个提交引入当前分支。
- 注意事项
- –force 或 -f 标志:一些命令(如 git push)允许您使用此标志来强制执行操作,但请小心使用,因为它可能会覆盖远程仓库上的更改。
- -u 或 --set-upstream 标志:与远程分支建立关联,以便后续推送和拉取。
五、总结
Git作为一款优秀的版本控制系统,具有高效、灵活和分布式的特点。通过学习和掌握Git的基本命令和工作原理,我们可以更好地管理自己的代码库,提高开发效率和质量。同时,Git也是团队协作的重要工具之一,它可以帮助我们更好地与他人协作开发、共享代码和解决问题。
相关文章:
入职Java,不会git被开除了。。。
入职Java,不会git被开除了。。。 文章目录 入职Java,不会git被开除了。。。前言一、Git是什么?二、Git的核心概念三、Git的工作流程四、Git的常用命令五、总结 🌈你好呀!我是 山顶风景独好 💝欢迎来到我的博…...
Mysql 隔离级别
MySQL的事务隔离级别是指在处理并发事务时,为保证数据的一致性和事务的独立性,数据库系统提供的不同级别控制策略。根据ACID特性中的隔离性(Isolation),MySQL支持四种标准的事务隔离级别,每种级别有不同的并…...
每日一学—K邻算法:在风险传导中的创新应用与实践价值
文章目录 📋 前言🎯 K邻算法的实践意义🎯 创新应用与案例分析🔥 参与方式 📋 前言 在当今工业领域,图思维方式与图数据技术的应用日益广泛,成为图数据探索、挖掘与应用的坚实基础。本文旨在分享…...
基于Springboot的校园疫情防控信息管理系统(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的校园疫情防控信息管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层…...
【C++】内联函数、auto、范围for
文章目录 1.内联函数2.auto关键字2.1auto简介2.2auto的注意事项2.3auto不能推导的场景 3.基于范围的for循环(C11)4.指针空值nullptr(C11) 1.内联函数 概念: 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内联函数的地方展开,没有函…...
Day 46 139.单词拆分
单词拆分 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明: 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1: 输入: s “leet…...
streamlit报错:AxiosError: Request failed with status code 403
解决办法: 步骤一:创建config.toml vi ~/.streamlit/config.toml 步骤二:加入以下内容 [server] enableXsrfProtection false enableCORS false步骤三:重新启动你的streamlit网页...
java基础教学 |Java Stream API详解
Java Stream API 是Java 8引入的一个重要特性,它为集合对象提供了一种新的计算模型,使得开发者能够以声明性的方式处理数据集合。Stream API 不仅提高了代码的可读性和简洁性,还极大地优化了并行处理能力,让复杂的集合操作变得高效…...
0.0和0.00竟然不相等!!!BigDecimal别用错了比较方式
对于BigDecimal字段,可以使用compareTo()方法和equals()方法进行比较。但是要注意这两种方法的作用有所不同。一般都应该使用BigDecimal比较值,而不是使用经常用到的equals方法比较内容。 1.compareTo()方法 是用来比较两个BigDecimal对象的大小关系。…...
【多模态】30、Monkey | 支持大尺寸图像输入的多任务多模态大模型
文章目录 一、背景二、方法2.1 Enhancing Input Resolution2.2 Multi-level Description Generation2.3 Multi-task Training 三、效果3.1 Image Caption3.2 General VQA3.3 Scene Text-centric VQA3.4 Document-oriented VQA3.5 消融实验3.6 可视化 论文:Monkey : …...
PHP黑魔法之md5绕过
php本身是一种弱语言,这个特性决定了它的两个特点: 输入的参数都是当作字符串处理变量类型不需要声明,大部分时候都是通过函数进行类型转化php中的判断有两种: 松散比较:只需要值相同即可,类型不必相同,不通类型比较会先转化为同类型,比如全数字字符串和数字比较,会比…...
【适用全主题】WordPress原创插件:弹窗通知插件 支持内容自定义
内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 适用于所有WordPress主题的弹窗插件 一款WordPress原创插件:弹窗通知插件 支持内容自定义 二、效果展示 1.部分代码 代码如下(示例)࿱…...
定时器的理论和使用
文章目录 一、定时器理论1.1定时器创建和使用 二、定时器实践2.1周期触发定时器2.2按键消抖 一、定时器理论 定时器是一种允许在特定时间间隔后或在将来的某个时间点调用回调函数的机制。对于需要周期性任务或延迟执行任务的嵌入式应用程序特别有用。 软件定时器: …...
【架构-17】通信系统架构设计理论
通信系统网络架构 1. 局域网网络架构 拓扑结构:星型、总线型、环型、树型。 网络架构:单核心架构(结构简单,地理范围受限)、双核心架构(网络拓扑结构可靠,投资较单核高)、环型架构…...
网络中的基本概念
网络初识 局域网:把若干个电脑组成在一起,通过路由器进行组网。 广域网:把局域网进一步的连接,构成更复杂的网络体系。 IP地址:区分主机。 端口号:区分主机上不同的程序。 协议:是一种约定&…...
手撸XXL-JOB(二)——定时任务管理
在上一节中,我们介绍了SpringBoot中关于定时任务的执行方式,以及ScheduledExecutorService接口提供的定时任务执行方法。假设我们现在要写类似XXL-JOB这样的任务调度平台,那么,对于任务的管理,是尤为重要的。接下来我们…...
DEV--C++小游戏(吃星星(0.2))
目录 吃星星(0.2) 简介 本次更新 分部代码 头文件(增) 命名空间变量(增) 副函数(新,增) 清屏函数 打印地图函数(增) 移动函数 选择颜色…...
Lua 协程池
协程池 在 使用 Lua 协程模拟 Golang 的 go defer 编程模式 中介绍了 Lua 协程的使用,模仿 golang 封装了下 还可以做进一步的优化 原来的 go 函数是这样实现的: function go(_co_task)local co coroutine.create(function(_co_wrap)_co_task(_co_w…...
[Linux][网络][协议技术][DNS][ICMP][ping][traceroute][NAT]详细讲解
目录 1.DNS1.DNS背景2.域名简介 2.ICMP协议1.ICMP功能2.ICMP两类报文 3.ping命令4.traceroute5.NAT技术1.NAT技术背景2.NAT IP转换过程3.静态地址NAT && 动态地址NAT4.网络地址端口转换NAPT5.NAT技术的缺陷6.NAT和代理服务器 6.总结1.数据链路层2.网络层3.传输层4.应用…...
Android 集成Bugly完成线上的异常Exception收集及处理
文章目录 (一)添加产品APP(二)集成SDK(三)参数配置权限混淆 (四)初始化 (一)添加产品APP 一)在个人头像 -> 我的头像 -> 新建产品 二&…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
