git分支的创建与分支之间合并的底层原理
开发一个版本,采用的发布流程:
(1).从master的最新代码拉取一个开发分支,在上面进行开发(这里假设开发分支为dev)
(2).在开发分支上不断地进行提交版本,期间,master也会有因为其他版本上线而不停有版本合并
(3).要发布的时候,把master代码重新合一遍到dev分支
(4).发布完成了,把dev的代码合到master
1.什么是分支
分支是一个commit对象链:一条工作记录线
git每一次提交版本,都会在该版本上存一个字段parent,记录的是上一个提交的版本号,这样就可以从一个提交的快照里拿到之前所有提交过的记录
2.新建分支是如何操作的
先了解2个重要的概念——HEAD和master:HEAD指向的就是当前分支(某个时刻你所处的分支),master指向提交
(1)创建分支之前,HEAD指向master
(2)创建分支dev,HEAD指针指向dev
与svn不同的是,svn创建分支会把全部内容拷贝一份,git创建分支只会创建一个指针
(3)开发的过程中,如果我们提交了代码,则指针情况是
(4)这个时候,假设master没有新的内容,而你的版本要发布了,则不需要从master上合代码到dev,发版完毕以后,要把dev分支的内容合到master,指针情况是
这种合并我们叫做fast-forward(快进,如果可能,合并分支git会使用这种模式,除非再合并时加上 --no-ff参数,这样就会多出一个commit_id)
(5)在我们要发版的情况下,一般的情况是,master有新提交,我们自己也有提交在上面,所以,一般的示意图是
(6)把master合到dev,准备发版(假设没有冲突,有冲突先解决)
(7)发布完成,代码从dev再合到master,见步骤(4)
git分支的创建与分支之间合并的底层原理的更多相关文章
- Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突 这篇是接着上篇分布式版本库--Windows下G ...
- git拉取远程分支并创建本地分支和Git中从远程的分支获取最新的版本到本地
git拉取远程分支并创建本地分支 一.查看远程分支 使用如下Git命令查看所有远程分支: git branch -r 二.拉取远程分支并创建本地分支 方法一 使用如下命令: git checkout ...
- git 从分支上创建一个分支
相关连接: 创建于合并分支:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00 ...
- git拉取远程分支并创建本地分支
本地分支推送至远程 git checkout local_branch git push origin local_branch:remote_branch 一.查看远程分支 使用如下Git命令查看所 ...
- git 工作实用创建删除分支
一.创建分支 .创建本地分支并切换 git checkout -b dev_wt2 .创建切换并关联远程分支 git checkout -b dev_wt3 orgin/dev_wt3 .创建远程分支 ...
- 码云git使用五(创建远程分支和更新远程分支)
1.创建一个与远程分支没有关联的本地分支 2.从远程拉取到本地分支 3.创建远程分支() 4.搞定了.
- git 在某个分支下创建新分支
首先要强调一个观念,那就是在某个分支A下创建新的分支B,是指使用A分支下的代码,并不是A/B这样的层级结构. 比如,我想要在非主分支dev 下面创建子分支dev_dev >>>1.创 ...
- Git知识总览(三) 分支的创建、删除、切换、合并以及冲突解决
前两篇博客集中的聊了git的一些常用命令,具体请参见<Git知识总览(一) 从 git clone 和 git status 谈起>.<Git知识总览(二) git常用命令概览> ...
- git 学习笔记 --创建与合并分支
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...
随机推荐
- PyQt(Python+Qt)学习随笔:QTextEdit的setText、setHtml、setPlainText之间的区别
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QTextEdit中提供了三个设置编辑器文本的方法,分别是setTex ...
- Python中的迭代是什么意思?
Python中的迭代是指通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代. ...
- PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中使用findItems搜索项
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QTreeWidget类实例的树型部件中,可以根据文本.搜索列以及匹配模式来搜索满足条件的项,调用 ...
- 第15.22节 PyQt(Python+Qt)入门学习:Model/View架构详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.简介 在PyQt和Qt中,Model/View架构是图形界面开发时用于管理数据和界面展现方式的关 ...
- 第14.14节 爬虫实战准备:csdn博文点赞过程http请求和响应信息分析
如果要对csdn博文点赞,首先要登录CSDN,然后打开一篇需要点赞的文章,如<第14.1节 通过Python爬取网页的学习步骤>按<第14.3节 使用google浏览器获取网站访问的 ...
- Java程序员需要了解的底层知识(一)
硬件基础知识 - Java相关硬件 汇编语言的执行过程(时钟发生器 寄存器 程序计数器) 计算机启动过程 进程线程纤程的基本概念面试高频 - 纤程的实现 内存管理 进程管理与线程管理(进程与线程 ...
- STL-Vector容量问题:
1.clear,erase ,pop_back() 函数只删除对象,并没有释放vec中的内存,若对象是指针还需要delete:2.在erase,clear,pop_back()删除对象的后,size改 ...
- APIO2020 粉刷墙壁
考场想了 5.5 h,第一部分分死活打不出来,做到崩盘,现在重做,感觉自己就是一个sb,放学在地铁上一眼就会了.哎. 可以把一个要求看作一个长度为 \(m\) 的区间:\([l, l + m - 1] ...
- 题解-FJOI2018 领导集团问题
题面 FJOI2018 领导集团问题 给一棵树 \(T(|T|=n)\),每个点有个权值 \(w_i\),从中选出一个子点集 \(P=\{x\in {\rm node}|x\in T\}\),使得 \ ...
- BIOS、UEFI、Boot Loader都是些什么
BIOS.UEFI.Boot Loader都是些什么 目录 BIOS.UEFI.Boot Loader都是些什么 什么是BIOS 基本的输入输出是什么 自检程序"检"了什么 系统自 ...