Git分布式管理-头歌实验分支管理

一、创建本地分支-git branch

任务描述

当你进入一个团队,在获得产品的完整代码之后,你首先要做的就是,在本地创建一个属于自己的分支,然后才能在自己的分支上进行开发。

本关任务:在本地仓库创建一个新的分支,并切换到该新分支,然后添加指定文件到本地仓库。

相关知识

当初始化一个版本库并进行第一次提交的时候,如果没有创建指定分支,并切换到该分支,commit操作默认会在本地创建master分支,并将内容提交到master分支。一般我们会在版本库中维护一个master分支,如下图所示:

我们在master分支上,进行了C1C2C3三次提交,且当前指针指向C3提交。

一般情况下,我们只会将已经成熟的代码存放到master分支,而将正在开发的代码或者测试版的代码放到其他分支。这时,我们就需要新建分支,以在该分支进行开发。如下图:

当我们在主分支进行了C2提交后,新建了develop分支,并在其上进行了两次提交。此时,工作区指针HEAD指向develop分支。 创建本地分支用到的命令是git branch,而分支切换用到的命令是git checkoutgit checkout是有很多用途的命令,在这里我们只讲它在分支操作中的使用。下面我们详细介绍这两个命令的使用。

  • 分支切换 可以使用git checkout 命令切换到其他分支。如你本地有master分支和develop分支,目前你正处于develop分支进行开发,现在你想切换到master去,则可以执行下面的操作: git checkout master 这样就能切换到master分支继续进行开发。
  • 创建新的分支 当你需要创建一个新的分支的时候,可以使用git branch命令,其具体使用格式为: git branch 新的分支名字 使用示例如下:
    #创建名为new_branch的新分支
    git branch new_branch
  • 创建新分支的同时切换 切换到一个新的分支,有一个更为简洁的命令:git checkout -b,它的使用格式为: git checkout -b 新的分支 名字 其具体使用方法如下: git checkout -b new_branch 这样就可以创建,并切换到了new_branch分支。
#创建gitTraining文件夹
mkdir gitTraining

#进入gitTraining文件夹
cd gitTraining

#将gitTraining初始化为一个本地仓库
git init

#请在下面的Bein/End星号线内,使用简洁的命令,新建gitTraining分支并切换到该分支
#********** Begin **********#
git checkout -b gitTraining

#********** End **********#

#创建helloGit.txt文件
touch helloGit.txt

#添加到暂存区
git add helloGit.txt

#提交到本地仓库
git commit -m "添加helloGit.txt"

 二、删除本地分支 git branch -D

任务描述

在开发过程中,很可能出现的一个情况是:你为了解决一个紧急bug,而临时创建了一个分支或者分支过于混乱需要丢弃。这时你就需要进行分支删除操作。

本关任务:删除本地分支。

相关知识

现在我们来看一个实际的例子。请看下图:

首先,我们在master工作到 C1,然后开始一个新分支develop分支,做为测试版的代码分支。提交到C5的时候,又需要临时解决一个问题,于是从C5的地方又分出一个分支issue。提交到C7的时候,该issue被解决。issue分支已经失去其意义,则需要将其删除,以保持本地版本库分支树的干净。我们将issue分支上的代码,合并到develop上之后,就可将issue分支删除。删除issue分支后的分支树如下:

其中,C8为合并issue分支所进行的提交。

删除本地分支,需要用到git branch命令,且需要-D参数,具体命令格式为:   

git branch -D 需要删除的分支的名字

具体使用示例如下:

#删除develop分支
git branch -D develop

示例中的命令,能够将本地分支develop删除。

编程要求

本关的编程任务是,补全右侧代码片段中BeginEnd中间的脚本,进入gitTraining本地仓库,删除git分支。平台已经为你准备了gitTraining本地仓库,其中有两个分支:mastergit,且版本库当前处于master分支。

#进入本地仓库目录
cd gitTraining

#请在下方Begin至End星号线内填写git命令以删除git分支
#********** Begin **********#

git branch -D git

#********** End **********#

 三、删除远程分支

任务描述

在开发过程中,有时可能由于产品变更,或者版本变更,而需要丢弃远程版本库中某个分支的内容。这个时候,你就需要一系列操作,来确保安全有效地删除远程分支。

本关任务:删除远程版本库中的某个分支。

相关知识

删除分支用到的git命令是git push,在具体的使用过程中有不同的用法。

  • 通过推送空分支到远程分支,实现删除。 一个删除远程分支的方法是,推送一个空分支到远程指定分支,以实现删除。推送本地分支到远程分支的方法是: git push 远程主机名 本地分支:远程分支
    • 与之类似,推送空分支实现删除的方法是:   git push 远程主机名 :远程分支前没有指定本地分支名。具体的使用示例如下:
      #删除远程develop分支,其中origin为远程仓库名
      git push origin :develop
  • 通过delete参数删除远程分支: 除了推送空分支到远程分支外,也可以通过delete参数实现删除。具体的命令格式为:   git push 远程主机名 --delete 远程分支名 具体使用示例如下:
    #删除远程develop分支,其中origin为远程主机名
    git push origin --delete develop
    编程要求

    本关的编程任务是,补全右侧代码片段中BeginEnd中间的脚本,删除远程git分支。平台已经准备了一个本地版本库gitTraining,且已将/tmp/educoder.git添加为远程仓库,并将其命名为origin,本地和远程均已创建gitmaster分支。

#进入gitTraining
cd gitTraining

#请在下方Begin至End星号线内填写git命令以删除远程git分支
#********** Begin **********#
git push origin --delete git

#********** End **********#
#进入gitTraining
cd gitTraining

#请在下方Begin至End星号线内填写git命令以删除远程git分支
#********** Begin **********#
git push origin  :git

#********** End **********#

 四、本地分支合并  git merge

任务描述

在协作开发中,团队中每个人可能都只负责一个模块。所以,很有可能,你在开发过程中,需要用到别人所开发的功能。这个时候就需要将别人分支的内容,合并到你自己的分支;或者,develop分支或者master分支有更新,你也需要将它们的修改,合并到你的分支,以跟上产品开发进程;也有可能你为了解决一个bug,创建临时分支,完成开发后,需要将其合并到你的分支。这些都需要分支合并的知识。

本关任务:合并本地分支的内容。

分支合并需要用到git merge命令,具体的命令格式为:

git merge 需要合并的分支

在具体使用中,如当前处于master分支,需要将develop分支合并到master分支,则具体的使用方式如下:

git merge develop

同时,分支合并也分为正常合并和快进式合并,通过为git merge添加参数,即可实现不同操作。

  • 快进式合并 默认情况下,Git执行"快进式合并",即fast-farward merge,会直接将被合并的分支指向需要合并的分支。如下图:

     

当需要将右侧分支(develop)合并到左侧分支(master)时,master分支会生成一个指针,直接指向develop。快进式合并为默认合并方式,不需要添加任何其他参数,使用git merge 需要合并的分支即可完成。

  • 当需要将右侧分支(develop)合并到左侧分支(master)时,master分支会生成一个指针,直接指向develop。快进式合并为默认合并方式,不需要添加任何其他参数,使用git merge 需要合并的分支即可完成。

如图所示,Master分支上产生了一次新的提交,也就是说生成一个新节点完成了合并,这样的话,版本演进更清晰。

下面我们以一个具体的例子,来演示一下这两种合并方式的区别:

  1. 创建master分支,并在其上提交hello文件;
  2. master分支切换到新分支develop,并进行两次提交,分别将hello1hello2两个文件提交到develop分支;
  3. 切换回master分支,执行git merge develop进行快进式合并,然后查看master分支的日志,得到如下提示信息:如上图可知,master分支多了develop分支上的两次提交信息。
  4. master分支回退到合并前状态,再次执行git merge --no-ff develop,进行非快进式合并,然后再次查看日志:
  5. 可见,master分支发生了分叉,且master多了一次提交。

    通过以上分析,两种合并方式的区别就很明显了。

编程要求

本关的编程任务是,补全右侧代码片段中BeginEnd中间的代码,将git分支以快进式方式合并到master分支。平台已准备了gitTraining版本库,并在本地创建了mastergit分支,且当前处于master分支。

#进入gitTraining目录
cd gitTraining

#请在下方Begin至End星号线内填写git命令以合并git分支内容到master分支
#********** Begin **********#
git merge git

#********** End **********#

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

面试问答总结之Java进阶

文章目录 🐒个人主页🏅JavaEE系列专栏📖前言:🎀注解Annotaion (java标注)🐕内置注解🐕元注解 🎀对象克隆🐕如何实现克隆🐕如何实现深克…

从零开始学习PX4源码2(PX4姿态误差计算)

目录 文章目录 目录摘要1.源码1.1源码路径1.2源码程序1.3源码功能 2.源码分析 摘要 本节主要记录PX4姿态误差计算过程,欢迎批评指正。 1.源码 1.1源码路径 PX4-Autopilot/src/modules/mc_att_control/AttitudeControl/AttitudeControl.cpp1.2源码程序 matrix::…

[项目设计] 从零实现的高并发内存池(三)

🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[高并发内存池] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 ​ 目录 4.CentralCache实现 4.1 CentralCache整体架构 4.2 围绕Span的相关设计…

STM32CubeIDE基础学习-基础外设初始化配置

STM32CubeIDE基础学习-基础外设初始化配置步骤 前言 前面的文章介绍了基础工程的创建步骤,这篇文章就接着在基础工程的基础上来配置相关外设了,下面以STM32F103C8T6的主芯片为例进行简单配置。 基础工程创建步骤回顾 具体的配置步骤流程如下&#xff1…

使用git的小笔记

平时工作中使用git存储项目代码, 常用的命令 拉取仓库代码 git clone http://100.100.100.100:9080/my_test/test.git 拉取到以后, 先切换到自己的分支 git checkout my_name 一顿魔改代码 然后 add 新增的文件或者修改的文件 git add * 然后提交 并写…

美国和中国互相竞争的计算机(大脑)都由哪些东西组成

计算机基础 本章要点 -> 计算机的发展史 -> 计算机的分类 -> PC系统的组成 一 计算机的发展 1946年2月14日,在美国宾夕法尼亚大学,众所周知的世界上 第一台电子数字计算机ENIAC诞生 计算机发展至今,共经历了以下几个阶…

netlink原理及应用

什么是netlink netlink是一种基于网络的通信机制,允许内核内部、内核与用户态应用之间甚至用户态应用之间进行通信;netlink的主要作用是内核与用户态之间通信;它的思想是,基于BSD的socket使用网络框架在内核和用户态之间进行通信…

docker安装ES和kibana

文章目录 一、安装Elasticsearch1. 安装Elasticsearch2. 安装IK分词器3. elasticsearch-head 监控的插件4. 配置跨域 二、安装kibana 提示:以下是本篇文章正文内容,下面案例可供参考 一、安装Elasticsearch 1. 安装Elasticsearch 安装Elasticsearch参…

揭秘麦肯锡的方法:产品经理解决问题指南

您是否想知道世界上最成功的产品经理如何始终如一地提供不仅满足而且超出预期的解决方案?秘密可能就在于世界上最负盛名的咨询公司之一麦肯锡公司所磨练的方法论。本文深入探讨了麦肯锡的问题解决流程,该流程专为希望提升水平的产品经理量身定制。 01. 麦…

java 面试题总结

1锁粗化和锁消除&#xff0c;锁膨胀和锁升级的区别。 https://www.cnblogs.com/xuxinstyle/p/13387778.html .无锁 < 偏向锁 < 轻量级锁 < 重量级锁 &#xff0c;说的时候不要忘记说无锁状态 2.Map 的实现&#xff0c;线程安全的实现 1、ConcurrentHashMap在JDK 1.7…

【AI视野·今日CV 计算机视觉论文速览 第300期】Fri, 1 Mar 2024

AI视野今日CS.CV 计算机视觉论文速览 Fri, 1 Mar 2024 Totally 114 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers DistriFusion: Distributed Parallel Inference for High-Resolution Diffusion Models Authors Muyang Li, Tianle Cai, J…

国创证券|AI手机PC概念拉升,福蓉科技4连板,思泉新材大涨

AI手机PC概念大幅走高&#xff0c;到发稿&#xff0c;思泉新材涨近15%&#xff0c;盘中一度涨停&#xff1b;道明光学、福蓉科技均涨停&#xff0c;诚迈科技涨近8%&#xff0c;亿道信息涨逾6%。 值得注意的是&#xff0c;福蓉科技已接连4个交易日涨停。公司4日晚间发布危险提示…

【c++】STL--List的实现

目录 一. List的数据结构 二. List实现的基本框架 1. list的结点结构类 2. List的迭代器类 正向迭代器 反向迭代器 3. List操作接口的实现 1. 默认成员函数 构造函数 和 析构函数 拷贝构造函数 和 赋值运算符重载 2. 修改相关函数接口 insert 和 erase …

pytorch统计属性

目录 1.normal2. mean, sum, min, max, prod3.argmin, argmax4. topk kthvalue5. compare6.norm 1.normal torch.normal(mean, std, *, generatorNone, outNone) → Tensor返回一个张量&#xff0c;其中的每个元素随机来自独立的标准正态分布。这些分布具有给定的均值和标准差…

12-Linux部署Zookeeper集群

Linux部署Zookeeper集群 简介 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布式同步、组服务等。…

入门LLMs开发 — LangChain

像OpenAI的GPT-4这样的大型语言模型&#xff08;LLMs&#xff09;已经风靡全球。它们可以自动执行各种任务&#xff0c;如回答问题、翻译语言、分析文本等。LLMs是第一种真正感觉像“人工智能”的机器学习类型。 然而&#xff0c;在将LLMs应用于实际产品时仍然存在挑战。特别是…

特氟龙塑料试剂瓶对比普通塑料和玻璃试剂瓶的优势

试剂瓶作为实验室中常备器皿耗材之一&#xff0c;主要用来盛放和储存样品、试剂&#xff0c;根据使用条件不同&#xff0c;也可叫取样瓶、样品瓶、储样瓶、广口瓶等。 根据瓶口口径不同&#xff0c;可分为广口瓶和窄口瓶&#xff0c;广口瓶口径较大&#xff0c;主要用于储存固…

Vue.js 实用技巧:深入理解 Vue.mixin

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

JProfiler详解 JVM性能监测内存泄露分析工具

JProfiler详解 JProfiler简介主要功能特点使用场景注意事项使用案例使用步骤Could not verify ssh-ed25519 host key with fingerprint 问题解决内存泄露分析 JProfiler简介 JProfiler是一款业界领先的Java性能分析工具&#xff0c;由ej-technologies公司开发&#xff0c;专门…

【亲测】注册Claude3教程,解决Claude3被封号无法发送手机验证码

【亲测】注册Claude3教程&#xff1a;解决无法发送手机验证码的问题 Anthropic 今日宣布推出其最新大型语言模型&#xff08;LLM&#xff09;系列——Claude 3&#xff0c;这一系列模型在各种认知任务上树立了新的性能标准。Claude 3 系列包括三个子模型&#xff1a;Claude 3 …