Git学习笔记4-分支
参考链接廖雪峰git教程:https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136
1.分支创建
创建本地分支:
$ git branch testing #创建一个分支,并命名为testing
创建远程分支(分两步):
$ git branch testing #创建一个分支,并命名为testing
$ git push origin testing #将分支推送到远程(相当于创建一个远程分支)
2.分支切换
$ git switch master #切换到testing分支,即HEAD指向testing分支(在Git2.23及以上的版本中使用)
$ git checkout testing
3.分支创建及切换
$ git switch -c dev #创建dev分支,然后切换到dev分支(在Git2.23及以上的版本中使用)
$ git checkout -b dev
4.合并分支
$ git merge dev #合并指定的dev分支到当前分支
5.删除分支
删除本地分支
$ git branch -d [branch name] #删除分支,git branch --merged结果中的分支可以进行删除
$ git branch -D [branch name] #强制删除分支,git branch --no-merged结果中的分支可以进行强制删除
删除远程分支
$ git push origin :temp #删除远程分支
6.查看
$ git branch #查看所有分支及当前分支
$ git branch -v #查看每一个分支的最后一次提交
$ git branch --merged #查看哪些分支已经合并到了当前分支,结果中的分支可以进行删除
$ git branch --no-merged #查看哪些分支未合并到当前分支,结果中的分支不能删除
7.分支使用流程
$ git switch -c dev #创建并切换到新的分支dev
$ git branch #查看当前的分支,确定结果是dev分支
$ git add readme.txt #修改文件后,在dev分支上暂存文件
$ git commit -m 'branch test' #在dev分支提交文件
$ git switch master #dev分支工作完成,切换回master分支
$ git merge dev #把dev分支的修改合并到当前的master分支,此时master分支文件的内容和dev分支上的内容一样了
$ git branch -d dev #此时可以放心地删除dev分支的了
$ git branch #删除后确认,dev分支不在了
8.遇到冲突时的分支合并流程
$ git switch -c dev #创建并切换到新的分支dev
$ git branch #查看当前的分支,确定结果是dev分支
¥ 修改readme.txt文件
$ git add readme.txt #修改文件后,在dev分支上暂存文件
$ git commit -m 'branch test' #在dev分支提交文件
$ git switch master #dev分支工作完成,切换回master分支
¥ 修改readme.txt文件
$ git add readme.txt #修改文件后,在master分支上暂存文件
$ git commit -m 'master branch test' #在master分支提交文件
$ git merge dev #把dev分支的修改合并到当前的master分支,此时master分支文件的内容和dev分支上的内容一样了
此时,GIt无法执行“快速合并”,必须手动解决冲突后再提交:
$ git status #查看产生冲突的文件:
此时在本地打开产生冲突的文件:
手动删除两个内容中的一个(包括<<<<<<和======标记)
$ git add readme.txt #修改文件后,在master分支上暂存文件
$ git commit -m 'conflict fixedt' #在master分支提交文件
$ git branch -d dev #删除dev分支
工作完成。
9.BUG分支流程
a. 保存现场
$ git stash
b.恢复现场
$ git stash apply stash@{0} #恢复stash@{0}现场
$ git stash drop stash@{0} #删除stash@{0}现场 $ git stash pop stash@{0} #恢复的同时也删除stash@{0}现场
c. bug分支流程
在软件开发中,你正在dev分支中工作。突然接到一个修复代号101bug的任务时,你会很自然的从master分支创建一个分支Bug-101来修复他。但是dev分支上的工作只进行到了一半,还没法提交,此时你可以使用git stash指令存储当前工作现场,等以后恢复现场后在dev分支上继续工作。
当master分支上修复了bug后,因为dev分支是早期从master分支分出来的,所以,这个bug在当前dev分支上也存在。我们可以使用git cherry-pick <commit>把git commit提交所做的修改“复制”到dev分支。
$ git *** #你现在在dev分支上工作
$ git stash #保存现场
$ git switch master #切换到主分支
$ git switch -c Bug-101 #创建Bug-101分支,并切换
¥101Bug 修复工作
$ git add readme.txt
$ git commit -m "fix bug-101" #提交修复的文件,修复工作完成
$ git switch master #切换到主分区
$ git merge --no-ff -m "merge bug fix 101" #合并bug-101分支到master分支
$ git branch -d Bug-101 #删除Bug-101分支
$ git switch dev #切换到修复101bug之前的工作分支
$ git stash list #查看保存的工作现场信息
$ git stash pop #恢复现场,并删除保存的现场内容
在master分支上修复了bug后,我们要想一想,dev分支是早期从master分支分出来的,所以,这个bug其实在当前dev分支上也存在。我们只需要把6560f7c fix bug 101
这个git commit提交所做的修改“复制”到dev分支。
$ git cherry-pick 6560f7c #将master分支指定的git commit提交复制到当前的dev分支
10.分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master
分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在dev
分支上,也就是说,dev
分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev
分支合并到master
上,在master
分支发布1.0版本;你和你的小伙伴们每个人都在dev
分支上干活,每个人都有自己的分支,时不时地往dev
分支上合并就可以了。所以,团队合作的分支看起来就像这样:
Git学习笔记4-分支的更多相关文章
- git 学习笔记 --Bug分支
软件开发中,bug就像家常便饭一样.有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除. 当你接到一个修复一 ...
- git学习笔记09-bug分支-自己的分支改到一半了-要去改bug怎么办?
当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交: 并不是你不想提交,而是工作只进行到一半,还没法 ...
- Git学习笔记五--分支管理
为什么要引入分支? 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部 ...
- git 学习笔记--Feature分支
软件开发中,总有无穷无尽的新的功能要不断添加进来. 添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合 ...
- GIT学习笔记(4):远程分支
GIT学习笔记(4):远程分支 远程分支 远程分支是什么 远程分支是对远程仓库中的分支的索引.它们是一些无法移动的本地分支:只有在GIT进行网络交互时才会更新.远程分支就是书签,提醒着你上次连接远程仓 ...
- GIT学习笔记(3):分支管理
GIT学习笔记(3):分支管理 何谓分支 GIT是如何存储数据的 GIT不是存储文件差异或者变化量,而是一系列文件的快照.在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容 ...
- Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
- git 学习笔记6--remote & log
git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...
- 【转帖】Git学习笔记 记录一下
本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...
随机推荐
- pandas分组统计:groupby,melt,pivot_table,crosstab的用法
groupby: 分组 melt: 宽表转长表 pivot_table: 长表转宽表,数据透视表 crosstab: 交叉表 / 列联表,主要用于分组频数统计 import numpy as np i ...
- ora-01489 字符串连接的结果过长 解决方案
如下代码,使用listagg进行分组拼接时,常常会报 ora-01489 错误,造成该报错的主要原因是:oracle对字符变量的长度限制,正常情况下,oracle定义的varchar2类型变量的长度不 ...
- lua 2 变量
变量在使用前,必须在代码中进行声明,即创建该变量. 编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值. Lua 变量有三种类型:全局变量.局部变量.表中的域. Lua 中的 ...
- jQuery中的属性(四)
1. attr(name|properties|key,value|fn), 设置或返回被选元素的属性值 参数说明: name:属性名称 properties:作为属性的“名/值对”对象 key,va ...
- 鲜贝7.3--postman安装
Postman电脑客户端安装: Postman的安装非常简单,在windows系统只需要双击安装包,然后什么都不需要操作,它直接就自己完成了,如下图.如果是mac 也是跟普通软件的安装方法相同.在初次 ...
- 剑指Offer-12.数值的整数次方(C++/Java)
题目: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不同时为0 分析: 注意base为0和expo ...
- CF915E Physical Education Lessons 珂朵莉树
问题描述 CF915E LG-CF915E 题解 \(n \le 10^9\) 看上去非常唬人. 但是这种区间操作的题,珂朵莉树随便跑啊. \(\mathrm{Code}\) #include< ...
- Nginx 安装与部署配置
下载 官方网站:https://nginx.org/en/download.html Windows下安装 安装 下载后解压(切记不能含有中文路径!!),文件结构如图(我解压的路径就有中文,记得拷贝放 ...
- CF 938G Shortest Path Queries
又到了喜闻乐见的写博客清醒时间了233,今天做的依然是线段树分治 这题算是经典应用了吧,假的动态图(可离线)问题 首先不难想到对于询问的时间进行线段树分治,这样就可以把每一条边出现的时间区间扔进线段树 ...
- Paper | Toward Convolutional Blind Denoising of Real Photographs
目录 故事背景 建模现实噪声 CBDNet 非对称损失 数据库 实验 发表在2019 CVPR. 摘要 While deep convolutional neural networks (CNNs) ...