git----分支管理之bug分支04

cxq0017 cxq0017     2023-01-04     567

关键词:

---恢复内容开始---

  软件开发中,bug就像家常便饭一样,有了bug就需要修复,在Git中,由于分支是如此强大,所以,每个bug都可以通过一个临时分支来修复,修复后,合并分支,然后将临时分支删除。

  当你接到一个修复一个代号101的bug任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交:

$ git status
On branch master
Your branch is up to date with ‘origin/master‘.

Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file: hello.py

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: readme.txt

   并不是你不想提交,而是工作只进行到一半,还没发提交,预计完成还需1天时间,但是,必须在两个小时之内修复该bug,怎么办?

  幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

$ git stash
Saved working directory and index state WIP on dev: 45e3302 add merge

现在,用git status查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心的创建分支来修复bug。

$ git status
On branch dev
nothing to commit, working tree clean

首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:

$ git checkout master
Switched to branch ‘master‘
Your branch is up to date with ‘origin/master‘.

 

$ git checkout -b issue-101
Switched to a new branch ‘issue-101‘

现在修复bug,需要把readme.txt里面的内容“Git is software...”改为“Git is a free software....”然后提交

$ git add readme.txt

$ git commit -m "fix bug 101"
[issue-101 27c08c6] fix bug 101
1 file changed, 1 insertion(+), 1 deletion(-)

修复完成以后,切换到master分支,并合并完成,最后删除issue-101

$ git checkout master
Switched to branch ‘master‘
Your branch is up to date with ‘origin/master‘.

 

$ git merge --no-ff -m "merged bug fix 101" issue-101
Merge made by the ‘recursive‘ strategy.
readme.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

太棒了,原计划两个小时的bug修复只花了五分钟,现在,是时候接着回到dev分支干活了

$ git checkout dev
Switched to branch ‘dev‘

$ git status
On branch dev
nothing to commit, working tree clean

工作区是干净的,刚才的工作现场存到哪里去了?用git stash list命令看看:

$ git stash list
[email protected]0: WIP on dev: 45e3302 add merge

工作现场还在,Git把stash内容存到某个地方了,但是需要恢复一下,有两个办法:

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了。

$ git stash pop
On branch dev
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file: hello.py

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: readme.txt

Dropped refs/[email protected]0 (b0d65dce977ac8b90006982914b08c161363c942)

再用git stash list查看,就看不到任何stash内容了:

$ git stash list

你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

$git stash apply [email protected]0

 

 摘抄自:

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137602359178794d966923e5c4134bc8bf98dfb03aea3000

 




























[廖雪峰]git分支管理:bug分支

...bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。当你接到一个修复一个代号101的bug的任务时,很自然地... 查看详情

git学习6--分支管理策略,bug分支

1.准备合并dev分支,请注意--no-ff参数,表示禁用Fastforward:$gitmerge--no-ff-m"mergewithno-ff"devMergemadebythe‘recursive‘strategy.readme.txt|1+1filechanged,1insertion(+)合并后,我们用gitlog看看分支历史:$gitlog--graph--pretty=onelin 查看详情

[git]3_分支管理(代码片段)

目录创建与合并分支解决冲突分支管理策略不使用Fastforward模式分支策略Bug分支Feature分支学习资源来自廖雪峰的Git教程本文简短记忆学习内容,主要是使用命令,方便以后查看,完整学习请查看廖雪峰Git教程操作过程在Ubuntu18.04... 查看详情

jenkins持续集成之git分支(代码片段)

Jenkins持续集成之git分支什么是分支软件项目中启动一套单独的开发线的方法为什么使用git1.可以很好的避免版本兼容开发的问题,避免不同版本之间的相互影响。2.封装一个开发阶段。3.解决bug的时候新建分支,用于对该bug的研... 查看详情

git版本管理规范(gitflow)

参考技术A需求是开发的起点,先有需求再有功能分支或者补丁分支。完成开发后,该分支就合并到常驻分支,然后被删除.完成开发,该分支会合并到develop或master中,合并完成之后该分支的生命周期结束,删除该分支。*是取通... 查看详情

git安装教程分支管理之分支管理策略(代码片段)

通常,合并分支时,如果可能,Git会用Fastforward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fastforward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。下面我们实战一... 查看详情

项目git分支管理规范

...制系统,用于敏捷高效地处理任何或小或大的项目。一、分支管理项目中,一般会创建三个常用分支:develop:开发环境的稳定分支,公共开发环境基于该分支构建。pre-release:测试环境的稳定分支,测试环境基于该分支构建。mas... 查看详情

github-分支管理02-bug与feature分支(代码片段)

 参考博文:廖雪峰Git教程 1.Bug分支      软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并... 查看详情

git系列四之分支管理

Git系列四之分支管理2017-03-02 分类:Git 阅读(1175) 评论(1)来自为知笔记(Wiz) 查看详情

git分支管理之创建与合并分支

...提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是... 查看详情

git分支管理策略

在项目中推荐的Git分支管理策略介绍:主分支Master永久分支首先,代码库应该有一个、且仅有一个主分支Master。项目的正式版本,都在这个主分支上发布。它是自动建立的,版本库初始化以后,默认就是在Master分支进行开发。功... 查看详情

git:分支管理

Git分支管理索引创建分支合并分支解决冲突BUG分支01.创建分支查看当前的工作分支#查看当前在哪个分支下工作gitbranch主分支master,开始是HEAD指向master分支创建新分支,再把HEAD指向新的分支#创建名为dev的分支gitcheckout-bdev#接下来... 查看详情

git之分支管理(代码片段)

创建和合并分支head指向当前分支创建分支并切换$gitcheckout-b<branch>等价于$gitbranch<branch>$gitcheckout<branch>dev分支提交一次更改把指定分支合并到当前分支上$gitmerge<branch>删除分支$gitbranch-d<branch>禁用Fastforward模... 查看详情

团队项目的git分支管理规范

...助型项目可以简单一些),会针对不同环境创建三个常设分支:平时开发工作中,会根据需要由开发人员创建两类临时分支:并行开发(即前一个版本已经仿真测试完成但未上线,后一个版本又已在开发中并部分合并到了develop... 查看详情

git由浅入深之分支管理

几乎所有的版本控制系统都以分支的方式进行操作,分支是独立于项目主线的一条支线,我们可以在不影响主线代码的情况下,在分支下进行工作。对于传统的一些版本控制工具来说,我们通常需要花费比较多的时间拷贝主线代... 查看详情

jenkins持续集成之git分支管理

分支的用法通常一个项目里面会有最基本的:master(主)、dev(开发)、test(测试)三个分支,在整个项目程序发布的过程中,dev分支开发完成之后,会把dev分支合并到test分支,然后测试人员对该程序功能进行测试,如测试功能,再由t... 查看详情

git教程学习--第五篇bug分支

一、分支管理策略1.首先创建并切换dev分支gitcheckout-bdev2.新建dev.txt文件,并添加gitadddev.txt二、Bug分支1.当工作进行到一半,还没办法提交,但是还要修复bug,怎么办呢先把工作现场“储藏”起来,等以后恢复现场后继续工作:git... 查看详情

git使用之基于分支管理(代码片段)

1,列出远程仓库gitremoteshoworigin2,查看远程分支gitbranch-a3,创建分支1)在本地创建develop分支gitcheckout-bdevelop如果此时我们只是push命令gitpush得到的信息如下fatal:当前分支develop没有对应的上游分支。推送当前分支并设置远程为上... 查看详情