什么是git?

前言

Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是的,我对git的介绍就一条,想看简介的可以去百度一下😘😘😘

为什么要用git?

OK,想象一下,我是一名作家,现在我要开始写一本小说了,我想要将我的小说每天都发布到“github小说网”上,一日两更。我想要一个工具,它要具备的功能如下:

  1. 将我每天写的小说章节发布
  2. 我发现昨天写的章节有问题,它可以帮我撤回
  3. 一周后,我又想找到上周我撤回的章节,它能帮我找到
  4. 我想写一个“漫威宇宙的系列”,我需要雇人和我一起写,它可以帮我们同步进度
  5. 我想要查看每个人写了什么,什么时候写的
  6. ...

想要的有点多了,我知道很难满足,但是git就能满足我的一切需求...

写小说

我进厂写小说了,厂长说:你先下一个git。那我必须得下一个git

下载git

直接跑到这个git官网www.git-scm.com/downloads ,可以搜个教程跟着安装,这里就不细说了

基本配置

把git下载下来了,那我不得登录一下,免得到时候小说写的有问题都不知道是谁写的,为了不背锅!

$ git config --global user.name $ git config --global user.email

参与写小说

来到“github小说网”,要将之前的章节全部拷贝到你的电脑上,才能开始续写

image.png

使用git clone 命令来完成

$ git clone https://github.com/vuejs/vue.git

这样就将代码克隆到你的本地了

小说版本

我们的小说每天都在迭代更新,master分支就是我们的主分支,也就是目前发布的最新的小说内容

image.png

每当我们向master提交代码,master都会向前移动一步。

想象一个场景,有十个人都在写同一本小说,那么十个人都同时向master提供代码,会发生什么事情?

  • 并行开发受限:没有分支意味着无法支持并行开发,因为每个人都只能基于master进行工作,这可能会导致团队成员之间的代码冲突。

  • 代码管理困难:由于所有更改都直接应用于master,代码管理会变得混乱,很难跟踪谁提交了哪些更改,以及何时进行了更改。

  • 风险高:由于没有分支,每次更改都直接影响master,这可能增加了引入错误或破坏现有功能的风险。

  • 难以撤销更改:没有分支意味着难以进行实验性更改或回滚到先前的版本,因为没有办法轻松地隔离或恢复更改。

所以我们每个人都需要创建自己的分支,最后再将自己的分支与master合并

当我们创建了新的分支,比如叫 myBranch ,git 就会新建一个指针叫 myBranch,指向 master 相同的提交,在把 HEAD 指向 myBranch,就表示当前分支在 myBranch 上。

image.png

从现在开始,对工作区的修改和提交都是针对 myBranch 分支了,如果我们修改后再提交一次,myBranch指针就会向前移动一步,而master指针不变,当我们将myBranch开发完毕以后,再将它与master合并

  • 查看当前分支

$ git branch

  • 创建分支

$ git checkout -b 分支名

git checkout 命令加上-b参数,表示创建分支并切换,它相当于下面的两个命令:

$ git branch dev //创建分支 $ git checkout dev //切换到创建的分支

提交

在上面,我们已经创建好了一个分支myBranch,我们一天要写两章小说,当我每写完一章以后,我要将它先存入暂存区,当一天的工作完毕以后,统一将暂存区的代码提交到本地仓库,最后再上传到远程仓库,并且合并

  • 上传暂存区

$ git add . //将修改的文件全部上传 $ git add xxx //将xxx文件上传

  • 提交到本地仓库

git commit -m '提交代码的描述'

  • 提交到远程仓库的对应分支

$ git push origin xxx //xxx是对应分支名

  • 合并分支

$ git checkout master //首先切换分支到master $ git merge mybranch

  • 删除分支

当你合并完分支以后,mybranch分支就可以删除了

$ git branch -d mybranch

解决冲突😘😘

Git 合并分支产生冲突的原因通常是因为两个或多个分支上的相同部分有了不同的修改。这可能是因为以下几个原因:

  1. 并行开发:团队中的不同成员在不同的分支上同时开发功能或修复 bug。如果他们修改了相同的文件或代码行,就会导致合并冲突。
  2. 分支基于旧版本:当从一个旧的提交创建分支,然后在原始分支上进行了更改时,可能会导致冲突。这是因为在创建分支后,原始分支可能已经有了新的提交。
  3. 重命名或移动文件:如果一个分支重命名或移动了一个文件,而另一个分支对同一文件进行了修改,就会导致冲突。
  4. 合并冲突的解决方法不同:在合并分支时,有时会使用不同的合并策略或解决方法,这可能会导致冲突。
  5. 历史分叉:如果两个分支的历史分叉很远,可能会存在较大的差异,从而导致合并时出现冲突。

于是我们需要将冲突解决再重新合并分支,解决冲突也就是查看文件新增了哪些代码,你需要保留哪些代码,把不需要的删去就可以了...

我们还需养成一个好习惯,就是在开发之前先git pull 一下,更新一下自己本地的代码确保版本是最新的。

添砖加瓦

如果我已经使用git commit -m 'xxx'将代码提交到了本地仓库,但是我后续还想向这个提交中添加文件,那我该怎么办呢?

  1. 首先将你想添加到文件使用git add xxx加入暂存区
  2. 然后运行以下命令:

$ git commit --amend

这将会打开一个编辑器,让你编辑上一次提交的提交信息。如果你只是想要添加文件而不改变提交信息,你可以直接保存并关闭编辑器。

  1. Git 将会创建一个新的提交,其中包含之前的提交内容以及你刚刚添加的文件。

您撤回了一次push

代码推送到远程仓库的master上以后,我发现有bug,挨批是不可避免了,批完还得接着解决...

  1. 撤销最新的提交并保留更改

$ git reset HEAD^

这会将最新的提交从 master 分支中撤销,但会保留更改在工作目录中。你可以修改这些更改,然后重新提交。

  1. 撤销最新的提交并丢弃更改

$ git reset --hard HEAD^

这会完全撤销最新的提交,并丢弃相关的更改。慎用,因为这将永久丢失你的更改

  1. 创建新的修复提交

如果你不想删除最新的提交,而是创建一个新的提交来修复问题,可以进行如下操作:

  • 在 master 分支上创建一个新的分支来进行修复

$ git checkout -b fix-branch master

  • 在新分支上进行修改,修复代码中的问题。
  • 提交并推送修复:

$ git add . $ git commit -m "Fixing the issue" $ git push origin fix-branch

仅供参考!!!

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

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

相关文章

《C语言》文件操作

文章目录 一、认识文件1、文件的概念2、程序文件3、数据文件4、文件名 三、二进制文件和文本文件四、文件的打开和关闭1、流2、标准流3、文件指针4、文件的关闭和打开 四、文件的顺序读写文件的随机读写1、fseek2、ftell3、rewind4.int origin 一、认识文件 主要讨论数据文件 1…

Javaweb06-Jsp技术

Jsp技术 一.Jsp的运行原理 **概述:**JSP是Java服务器页面,既可以写静态页面代码,也可以写动态页面代码 **特点:**跨平台性,业务代码相分离,组件重用,预编译 运行原理: 客户端发生…

如何设计一个秒杀系统?

这篇分享源自之前购买的极客时间课程《如何设计一个秒杀系统》,以及书籍《亿级流量网站架构核心技术》。 这两个讲的都是关于高并发系统设计的,感觉收获颇多。 本篇内容对核心要点进行了摘录,也结合网上一些文章,希望能分享所得…

运算符及表达式+基本语句和函数使用的详细讲解

运算符及表达式 运算符及表达式 在C语言中,运算符是用于执行特定操作的符号,而表达式则是由运算符和操作数组成的式子。 1) 运算符 运算符的目数 单目运算符:只需要一个操作数,如 !(逻辑非)、&#xf…

简易开发一个app

即时设计网站 即时设计 - 可实时协作的专业 UI 设计工具 需要先设计好UI界面 上传到codefun 首次需要安装 自动生成代码 打开hb软件 新建项目 打开创建的项目 删除代码 复制代码过去 下载图片 将图片放到文件夹里 改为这种格式 index.vue 如果不需要uni-app导航栏可以修改 …

项目文件预览

在实际项目开发过程,项目使用数据存在多种形式,“文件”也是一种常见形式,因此,“文件预览”功能变成了常规需求。 kkFileView项目使用流行的spring boot搭建,易上手和部署。万能的文件预览开源项目,基本支…

以太网基础知识(二)—NRZ,PAM4调制技术

1:码元 了解调制技术需要引出“码元”的概念。 一个码元就是一个脉冲信号,即一个最小信号周期内的信号,我们都能够理解,最简单的电路,以高电平代表1,低电平代表0,一个代表1或者0的信号&#x…

分层解耦

三层架构 controller:控制层,接收前端发送的请求,对请求进行处理,并响应数据, service:业务逻辑层,处理具体的业务逻辑。 dao:数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数…

讨论C++模板

讨论C模板 函数重载和泛型编程模板分类函数模板语法原理函数模板的实例化隐式实例化显示实例化 匹配原则 类模板语法类模板的实例化 C支持了函数重载,通过函数名相同,参数列表不同来构成函数重载,以达到方便程序员调用。但还是没有改变代码大…

KT-H6测距模块标品,测距范围1500m,demo报价1000RMB,批量报价500RMB

激光测距传感器是一种用于测量距离的模块,通常由传感器和相关电子设备组成,测距模块可以集成到各种设备和系统中,以实现准确的测距和定位功能。KT-H6系列激光测距模块,为自主研发,激光波长905nm的激光器,专为热成像、夜视仪、无人机、安防、瞄具等产品定身打造,其优点是…

基于Matlab停车场车牌识别计时计费管理系统 【W2】

简介 停车场车牌识别计时计费管理系统在现代城市管理中具有重要意义。随着城市化进程的加快和车辆数量的增加,传统的人工管理停车场的方式已经难以满足效率和精确度的要求。因此引入车牌识别技术的自动化管理系统成为一种趋势和解决方案。 背景意义 提升管理效率&a…

元数据、数据元、数据字典、数据模型及元模型的区别详解

在数据管理和分析领域,有许多相似的概念,如元数据、数据元、数据字典、数据模型和元模型。这些概念的定义和应用往往容易混淆。 数据元 数据元是通过一系列属性描述的数据单元,包括定义、标识、表示以及允许值等。这些属性帮助我们理解和使用…

【Java04】引用变量数组初始化的内存机制

引用类型数组指向的元素也是引用。其本质是: 由一个在栈上的引用数组变量指向一块堆内存;这块堆内存里存储的元素是引用,又分别指向其他堆内存。 class Person // Person是一个自定义的类 {public int age;puiblic double height;public vo…

Codeforces Round 953 (Div. 2)(A~D题解)

这次比赛是我最顺利的一次比赛,也是成功在中途打进前1500,写完第三道题的时候也是保持在1600左右,但是后面就啥都不会了,还吃了点罚时,虽说如此也算是看到进步了,D题学长说很简单,但是我当时分析…

爱了爱了,11款超良心App推荐!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/今天,我们向你推荐十款与众不同但又不错的win10软件,它们都有各自的功能和优点,相信你一定会喜欢。 1.图片处…

Git/TortoiseGit ssh client 配置

1. Git ssh client 配置 Git 默认的 ssh client 是 <Git 安装目录>/usr/bin/ssh.exe 修改方法为打开 Git Bash 执行&#xff1a; git config --global core.sshCommand "/C/Program Files/TortoiseGit/bin/TortoiseGitPlink.exe" 注意&#xff1a;如果路径…

​单级高频谐振小放

目录 高频交流等效电路 质量指标 增益 通频带 选择性 高频交流等效电路 质量指标 增益 YL撇是怎么来的。 通频带 选择性

Django中间件探索:揭秘中间件在Web应用中的守护角色与实战应用

系列文章目录 Django入门全攻略&#xff1a;从零搭建你的第一个Web项目Django ORM入门指南&#xff1a;从概念到实践&#xff0c;掌握模型创建、迁移与视图操作Django ORM实战&#xff1a;模型字段与元选项配置&#xff0c;以及链式过滤与QF查询详解Django ORM深度游&#xff…

Git管理(Linux版本)

在Linux中我们如何把自己的代码上传到gitee中呢&#xff0c;本期将为大家讲解详细的步骤。 目录 查看Linux环境是否存在git工具 在gitee上创建代码仓库 复制仓库的HTTP路径到Linux中 代码上传 在仓库下创建文件或者将文件移动到仓库下 使用三板斧进行文件的上传 add …

Podman常用命令

Podman 是 Red Hat 的一个开源项目&#xff0c;可以免费下载。它是容器化领域的一个相对较新的人&#xff0c;1.0 版将于 2019 年发布。此后 Podman 取得了长足的进步&#xff0c;其崛起伴随着 Docker 的逐渐衰落&#xff0c;该项目在许多方面创造了我们今天所知的容器世界。 容…