06-Git分支相关的命令,如创建/删除/切换分支

Git分支(副本)

在版本控制过程中需要同时推进多个任务,此时可以为每个任务创建单独分支即开一个一模一样的副本 ,最终分支开发完后再合并到主分支提高开发效率

  • 使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候不会影响主线分支的运行
  • 各个分支在开发过程中,如果某一个分支开发失败不会对其他分支有任何影响 , 失败的分支删除重新开始即可
  • 分支可以简单理解为副本,一个分支就是 一个单独的副本(分支底层其实也是指针的引用)
  • 同一个仓库可以有多个分支,每一个分支都对应工作区和暂存区以及本地库(都需要添加暂存和提交本地), 各个分支相互独立互不干扰

分支和文件版本的概念: 一个分支对应多个文件版本,默认指向最后更新的那个文件版本

  • head指向的分支就是当前分支,在项目目录下我们只能看到当前分支的内容

使用git init命令创建本地仓库时默认会创建一个master分支,其他分支可以围绕主分支进行开发

在这里插入图片描述

常用命令

命令功能
git branch列出本地的所有分支的简略信息
git branch -r列出所有的远程分支
git branch -a列出所有的本地分支和远程分支
git branch [branch-name]创建分支,分支的内容是基于当前分支复制的,包括文件版本信息
git checkout [branch-name]切换分支要求分支必须存在
当前分支上的内容必须先提交到本地库才能切换到其他分支
git checkout [-b] [branch-name]切换分支,如果分支不存在直接创建
git push [short-Name] [branch-name]推送资源至远程仓库的某个分支
git merge [branch-name]合并某个分支的资源到当前分支
git branch -d [branch-name]删除某个分支,会做检查对于还没有合并的分支可能无法删除
删除分支时不能删除当前分支,只能删除其他分支
git branch -D [branch-name]强制删除分支
git push [short-Name] –d [branch-name]删除远程仓库中的某个分支

git branch -v(可省略): -v表示查看本地所有分支的详细信息,*代表当前所在的分支

#查看本地所有分支的详细信息
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git branch -v
#当前分支是mater分支的my first版本
* master 087a1a7 my first commit 

#查看本地所有分支的简略信息
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git branch
* master 

git branch 分支名: 创建分支, 分支的内容是基于当前分支复制的(包括指向的文件版本),创建后如果再修改主分支的内容也不会影响子分支

git branch -d/-D 分支名: 删除分支,-d表示删除时需要做各种检查,当删除没有合并的分支时会出现删除不了的情况,-D表示强制删除不做检查

#在当前分支的基础上创建hot-fix分支
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git branch hot-fix
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git branch -v
hot-fix 087a1a7 my first commit 
* master 087a1a7 my first commit

git checkout 分支名: 切换分支,当前分支上的内容必须先提交到本地库才能切换到其他分支

git checkout -b 分支名: 切换分支,如果分支不存在则直接创建,创建的分支的内容是基于当前分支复制的

Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git checkout hot-fix
Switched to branch 'hot-fix'
#发现当先分支已由master改为hot-fix
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (hot-fix)

#查看hot-fix分支上的文件内容发现与master分支上的内容相同
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (hot-fix)
$ cat hello.txt
hello git! hello atguigu!
#在hot-fix分支上同样需要进行文件的修改-->提交文件到暂存区-->提交到本地库-->查看版本的信息(不会影响到主分支的内容)

master,hot-fix其实都是指向具体版本记录的指针,当前所在的分支其实是由HEAD决定的,所以创建分支的本质就是多创建一个指针

  • HEAD如果指向master: 那么我们现在就在master分支上 , master分支指向具体的版本
  • HEAD如果指向hotfix: 那么我们现在就在hotfix分支上, hotfix分支也指向具体的版本

在这里插入图片描述

每个分支都是独立的副本(都有各自的文件),修改创建的分支内容是不会影响主分支的内容

#在hot-fix分支上做修改
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (hot-fix)
$ vim hello.txt
hello git! hello atguigu! hot-fix test
#添加暂存区
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (hot-fix)
$ git add hello.txt
#提交本地库
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (hot-fix)
$ git commit -m "hot-fix commit" hello.txt

#切换到mster分支
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (hot-fix)
$ git checkout master

#master分支上还是第一次提交的版本内容
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ cat hello.txt
hello git! hello atguigu!

git merge 分支名: 将指定分支合并到当前分支,如在master分支执行合并命令,表示将其他分支上的资源合并到主分支,合并分支时会有提示输入wq可退出

在这里插入图片描述

#在maste分支上做修改
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ vim hello.txt
hello git! hello atguigu! master test
#添加暂存区
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git add hello.txt
#提交本地库
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git commit -m "master test" hello.txt
[master f363b4c] master test commit
1 file changed, 1 insertion(+), 1 deletion(-)

#再次修改在hot-fix分支上做修改
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (hot-fix)
$ vim hello.txt
hello git! hello atguigu! hot-fix test
hello git! hello atguigu! hot-fix test
#添加暂存区
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git add hello.txt
#提交本地库
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git commit -m "hot-fix test test" hello.txt
[master f363b4c] hot-fix test test commit
1 file changed, 1 insertion(+), 1 deletion(-)

#在master分支上合并hot-fix分支
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ git merge hot-fix
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt#合并时hello.txt文件有冲突
Automatic merge failed; fix conflicts and then commit the result
#冲突产生的表现:后面状态为 MERGING
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master|MERGING)
#查看状态(检测到有文件有两处修改)
$ git status
On branch master
You have unmerged paths.
 (fix conflicts and run "git commit")
 (use "git merge --abort" to abort the merge)
Unmerged paths:
 (use "git add <file>..." to mark resolution)
 both modified: hello.txt
no changes added to commit (use "git add" and/or "git commit -a")

冲突合并

冲突合并: 合并分支时,如果有两个/多个分支对同一个文件的同一个位置有两套完全不同的修改时,Git不知道使用哪一个分支修改的值, 此时就发生了冲突

  • 方案: 编辑有冲突的文件并删除特殊符号,人为决定要留下的内容,将解决完冲突的文件加入暂存区,最后执行提交命令(不带文件名)提交到本地仓库
#编写冲突的文件
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master|MERGING)
$ vim hello.txt
<<<<<<< HEAD
当前分支的冲突代码 
=======
合并过来分支的冲突代码 
>>>>>>> hot-fix

#添加到暂存区
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master|MERGING)
$ git add hello.txt
#提交本地库(此时使用git commit命令时不能带文件名)
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master|MERGING)
$ git commit -m "merge hot-fix"
[master 69ff88d] merge hot-fix
#发现后面MERGING消失,变为正常
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)

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

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

相关文章

Linux命令--根据端口号查看进程号(PID)

Linux命令–根据端口号查看进程号&#xff08;PID&#xff09; 查找8080端口对应的进程号: netstat -nlp|grep :8297对应的进程号1061,如果想杀掉此进程&#xff0c;可以用一下命令&#xff1a; kill -9 1061

2023年中国金融租赁行业研究报告

第一章 行业概况 1.1 定义 金融租赁是一种融资方式&#xff0c;其中租赁公司&#xff08;出租人&#xff09;为企业&#xff08;承租人&#xff09;购买所需设备&#xff0c;并在租赁期内由承租人使用。承租人负责支付租金&#xff0c;租赁期满后有权选择退租、续租或购买设备…

Java中重载和重写的区别

1.重写(Override) 从字面上看&#xff0c;重写就是重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法&#xff0c;但有时子类并不想原封不动的继承父类中的某个方法&#xff0c;所以在方法名&#xff0c;参数列表&#xff0c;返回类型…

【机器学习】集成学习算法之AdaBoost

文章目录 基本步骤示例生成第 1 棵决策树生产第 2 棵决策树生成第 T 棵决策树加权投票 sklearn 实现 基本步骤 首先&#xff0c;是初始化训练数据的权值分布 D 1 D_1 D1​。假设有 m m m 个训练样本数据&#xff0c;则每一个训练样本最开始时&#xff0c;都被赋予相同的权值…

爬虫从入门到精通(21) |字体加密通杀方案

文章目录 一、了解什么是字体加密二、Python打开字体加密文件三、字体加密的通杀1.静态的字体文件固定顺序的字体2.其他动态变化情况 一、了解什么是字体加密 字体加密是页面和前端字体文件想配合完成的一个反爬策略。通过css对其中一些重要数据进行加密&#xff0c;使我们在代…

启用Android放大镜功能,事半功倍,可惜该功能只存在于Android 14

安卓屏幕放大镜是一种无障碍功能&#xff0c;旨在通过放大屏幕上显示的内容来帮助任何有视力障碍的人。这是安卓提供的几个功能之一&#xff0c;旨在使智能手机更具包容性和用户友好性。 如果你曾经想知道如何在你的安卓手机上设置并充分利用屏幕放大镜&#xff0c;那么你就来…

索尼mxf覆盖部分恢复案例(索尼PMW-580)

索尼mxf覆盖部分恢复案例(索尼PMW-580) 索尼的摄像机型号是比较繁多的&#xff0c;高端系列基本上是以mxf文件为主&#xff0c;这一类案例之前处理不少&#xff0c;今天我们看一个索尼pmw-580摄像机删除后又覆盖的恢复案例。 故障存储:64G SD卡/Exfat文件系统 故障现象: 拍…

Java核心知识点整理大全25-笔记

目录 25. Hadoop 25.1.1. 概念 25.1.2. HDFS 25.1.2.1. Client 25.1.2.2. NameNode 25.1.2.3. Secondary NameNode 25.1.2.4. DataNode 25.1.3. MapReduce 25.1.3.1. Client 25.1.3.2. JobTracker 25.1.3.3. TaskTracker 25.1.3.4. Task 25.1.3.5. Reduce Task 执行…

理解Gamma传递函数

对于任何认真从事色彩工作或电影和电视母带处理的人来说&#xff0c;掌握Gamma编码是一项重要的知识&#xff0c;但它也可能是最令人困惑的主题之一&#xff0c;因为我们人类的视力与大多数电子设备的工作方式截然不同。 Gamma编码和传递函数的全部工作都是基于向我们的人眼提供…

【深度学习】gan网络原理生成对抗网络

【深度学习】gan网络原理生成对抗网络 GAN的基本思想源自博弈论你的二人零和博弈&#xff0c;由一个生成器和一个判别器构成&#xff0c;通过对抗学习的方式训练&#xff0c;目的是估测数据样本的潜在分布并生成新的数据样本。 1.下载数据并对数据进行规范 transform tran…

用Python进行gRPC接口测试(一)

前言 gRPC 是一个高性能、通用的开源RPC框架&#xff0c;其由 Google 主要面向移动应用开发并基于HTTP/2 协议标准而设计&#xff0c;基于 ProtoBuf(Protocol Buffers) 序列化协议开发&#xff0c;且支持众多开发语言。 自gRPC推出以来&#xff0c;已经广泛应用于各种服务之中…

UI自动化测试工具有哪些优势?

UI自动化测试工具通过提高测试效率、覆盖率&#xff0c;减少测试时间和成本&#xff0c;以及支持持续集成等方式&#xff0c;为软件开发团队提供了一系列重要的优势&#xff0c;有助于提升软件质量和开发效率。 自动化执行&#xff1a;UI自动化测试工具可以模拟用户与应用程序的…

ubuntu22下使用nvidia 2080T显卡部署pytorch

1.直接到NVIDA官网下载相应的驱动&#xff0c;然后安装官方驱动 | NVIDIA 2.下载相应版本cuda&#xff0c;并安装&#xff0c;安装时不安装驱动 3.conda install pytorch2.1.0 torchvision0.16.0 torchaudio2.1.0 pytorch-cuda12.1 -c pytorch -c nvidia 安装pytorch。 安装…

Qt应用开发--国产工业开发板全志T113-i的部署教程

Qt在工业上的使用场景包括工业自动化、嵌入式系统、汽车行业、航空航天、医疗设备、制造业和物联网应用。Qt被用来开发工业设备的用户界面、控制系统、嵌入式应用和其他工业应用&#xff0c;因其跨平台性和丰富的功能而备受青睐。 Qt能够为工业领域带来什么好处&#xff1a; -…

scratch《贪吃蛇》改编版——设计方案

一、设计思路 设计想法来自《贪吃蛇》游戏改编。《贪吃蛇》游戏的背景源自古老的瑞典神话&#xff0c;讲述一条巨蛇在世间蔓延&#xff0c;吞噬一切的传说。游戏的玩法很简单&#xff0c;玩家通过上下左右键控制蛇的方向&#xff0c;使其在地图上移动并吞噬食物&#xff0c;随…

Android 12 及以上授权精确位置和模糊位置

请求位置信息权限 为了保护用户隐私&#xff0c;使用位置信息服务的应用必须请求位置权限。 请求位置权限时&#xff0c;请遵循与请求任何其他运行时权限相同的最佳做法。请求位置权限时的一个重要区别在于&#xff0c;系统中包含与位置相关的多项权限。具体请求哪项权限以及…

创新药集采中选后是否还需进行学术营销推广模式?

药品集采中选给药企带来了大幅降价和以价换量的趋势&#xff0c;同时也成为药企争夺的关键领域。对于是否继续进行推广活动&#xff0c;存在不同的观点和认知。 ▼需要还是不需要&#xff1f; 一些人认为集采后不再需要推广&#xff0c;因为药企无法承担高昂的销售费用&#x…

11.29 知识回顾(视图层、模板层)

一、视图层 1.1 响应对象 响应---》本质都是 HttpResponse -HttpResponse---》字符串 -render----》放个模板---》模板渲染是在后端完成 -js代码是在客户端浏览器里执行的 -模板语法是在后端执行的 -redirect----》重定向 -字符串参数不是…

Java实现socket编程案例

以下是一个基本的Java socket编程案例&#xff1a; 服务端代码&#xff1a; import java.net.*; import java.io.*;public class Server {public static void main(String[] args) throws IOException {ServerSocket serverSocket null;try {serverSocket new ServerSocket…

深度学习今年来经典模型优缺点总结,包括卷积、循环卷积、Transformer、LSTM、GANs等

文章目录 1、卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;1.1 优点1.2 缺点1.3 应用场景1.4 网络图 2、循环神经网络&#xff08;Recurrent Neural Networks&#xff0c;RNNs&#xff09;2.1 优点2.2 缺点2.3 应用场景2.4 网络图 3、长短…