有种情况,我们要修复项目的bug时,但别的分支有修改的代码,要修复的bug可能会影响(所有分支共用一个暂存区)。可以单独创建一个bug分支,用于修复和提交bug,在修改前可以先stash封存分支修改的代码。

测试,首先在slave分支里修改文件:456的内容,然后执行git stash 封存slave分支未提交的代码。

laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (master)
$ git checkout slave
Switched to branch 'slave' laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git status
On branch slave
nothing to commit, working tree clean laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ ls
bb.css index.html info.py new laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ cat laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ vim laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ cat
修改456文件 laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git stash
warning: LF will be replaced by CRLF in .
The file will have its original line endings in your working directory.
Saved working directory and index state WIP on slave: 6957dae add
HEAD is now at 6957dae add laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git stash
No local changes to save laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git log --oneling
fatal: unrecognized argument: --oneling laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git log --oneline
6957dae add
775f3ab add new
6abf028 modify info.py
a068c80 add info.py
c5b475a Revert "add 123"
cfcbd5c add
13f5bcb add
Revert "add adc"
74f7cb6 add bb.css
577fab6 Revert "revert abc"
e1f2701 add adc
358cdac 添加UI.js
04c94a8 添加一个文件index.html

git stash

创建bug01分支,并修复和提交bug文件:998,然后切换到master分支,合并bug01分支

$ git branch bug01

laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git branch
bug01
master
* slave laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git checkout bug01
Switched to branch 'bug01' laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (bug01)
$ vim laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (bug01)
$ cat
fsaldkfsalfjlasjfl
修复bug内容部分 laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (bug01)
$ git status
On branch bug01
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: no changes added to commit (use "git add" and/or "git commit -a") laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (bug01)
$ git add laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (bug01)
$ git commit -m "monify bug 998"
[bug01 487e2eb] monify bug
file changed, insertion(+) laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (bug01)
$ git checkout master
Switched to branch 'master' laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (master)
$ git merge
merge mergetool laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (master)
$ git merge bug01 --no-ff -m "merge bug01"
Merge made by the 'recursive' strategy.
| +
file changed, insertion(+) laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (master)
$ git log --oneline
f698663 merge bug01
487e2eb monify bug
85bd6ea add dd.css
bdba943 merge slave --no--ff
6957dae add
112da02 modify new
775f3ab add new
8b5d2fd add new
6abf028 modify info.py
a068c80 add info.py
c5b475a Revert "add 123"
cfcbd5c add
13f5bcb add
Revert "add adc"
74f7cb6 add bb.css
577fab6 Revert "revert abc"
e1f2701 add adc
358cdac 添加UI.js
04c94a8 添加一个文件index.html

git merge

最后再解封slave,使用git stash pop可以解封最近的一次封存,使用git stash apply 封存编号可以解封指定的封存位置。

$ git checkout slave
Switched to branch 'slave' laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git status
On branch slave
nothing to commit, working tree clean laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git stash list
stash@{}: WIP on slave: 6957dae add laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git stash pop
On branch slave
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: no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{} (3ef365731c328973f18469b046770d7fa1b55e41) laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git stash
Saved working directory and index state WIP on slave: 6957dae add
HEAD is now at 6957dae add laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git stash list
stash@{}: WIP on slave: 6957dae add laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$ git stash apply stash@{}
On branch slave
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: no changes added to commit (use "git add" and/or "git commit -a") laoni@DESKTOP-TPPLHIB MINGW64 /c/laoni/PycharmProjects/github_test (slave)
$

git stash pop

git stash封存分支 以及关于开发新功能的处理的更多相关文章

  1. git stash 切换分支以后 恢复

    场景: 我在A分支开发 突然要去B分支改东西 但是A分支还没开发完 B又比较着急 又不想提交A 但是不提交又切换不到B 于是就发现有个git stash 将当前修改(未提交的代码)存入缓存区,切换分支 ...

  2. Git之原有基础开发新功能

    场景描述 当一个项目已经上线,同时又在原有基础上新增功能模块,于是乎就要在原有代码的基础上进行开发,在新增模块功能的开发的过程中,项目发现了一个紧急Bug,需要修复.操作流程如下:

  3. SQL Server 2012 开发新功能 序列对象(Sequence)(转)

    转载链接:http://www.cnblogs.com/zhangyoushugz/archive/2012/11/09/2762720.html 众所周知,在之前的sqlserver版本中,一般采用 ...

  4. Git 远程仓库分支管理

    目录 目录 速查表 关联远程代码仓库 克隆远程仓库 分支管理 创建分支 切换分支 合并分支 删除分支 解决冲突 速查表 指令 作用 git branch 查看分支 git branch newBran ...

  5. 5 个 Git 工作流,改善你的开发流程

    原文地址:5 Git workflows you can use to deliver better code and improve your development process 原文作者:Vi ...

  6. 使用Git分支开发新特性或修复Bug与使用Git分支开发新特性或修复Bug

    使用Git分支开发新特性或修复Bug 通过分支,可以在不影响原有代码的前提下改变代码,主要用于开发新功能新特性.下 一代产品 为已经发布的正式版修复bug 团队开发时为每个人建立一个分支,从而避免相互 ...

  7. IDEA:Git stash 暂存分支修改的代码

    IDEA:Git stash 暂存分支修改的代码 场景:当我们正在master分支开发新功能的时候,突然接到一个任务发现线上出现了一个紧急的BUG需要修复,由于没有打新分支做这部分新需求,这时正做到半 ...

  8. git 快照及分支

    分支介绍 分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平 ...

  9. 史上最浅显易懂的Git教程3 分支管理

    假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险 ...

随机推荐

  1. 搭建RAID10(5块硬盘)过程并模拟其中一块硬盘损坏

    首先:RAID 10,实际是将RAID 0和RAID 1标准结合的产物,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余.它的优点是同时拥有RAID 0的超 ...

  2. Nehe OpenGL教程第一课-创建一个OpenGL窗口(Win32)

       原文英文地址为:Creating an OpenGL Window (Win32),翻译的chm中文格式文档下载地址为:OpenGL教程电子书(chm格式)中文版,源代码在官网上也可以下载到,每 ...

  3. 自定义input[type="radio"]

    对于表单,input[type="radio"] 的样式总是不那么友好,在不同的浏览器中表现不一. 对单选按钮自定义样式,我们以前一直用的脚本来实现,不过现在可以使用新的伪类 :c ...

  4. python之合并多个字典或映射

    问题 现在有多个字典或者映射,你想将它们从逻辑上合并为一个单一的映射后执行某些操作, 比如查找值或者检查某些键是否存在. 解决方案 假如你有如下两个字典: a = {'x': 1, 'z': 3} b ...

  5. Android中XML的命名空间、自定义属性

    命名空间(namespace) XML 命名空间提供避免元素命名冲突的方法. 举个例子,A学校有名学生叫做林小明,B学校也有名学生叫林小明,那我们如何识别这两名拥有相同名字的同学呢?这时候命名空间就派 ...

  6. Linux解压rar文件

    Linux解压rar文件(unrar安装和使用,分卷解压) windows平台很多压缩文档为rar文件,那么怎么做到Linux解压rar文件(unrar安装和使用)? 简单,centos5安装unra ...

  7. codeforces847J Students Initiation 网络流

    题目传送门 题意: 有n个人,m对关系,要求每对关系中,有且仅有一个人给另外一个人送礼物,并且使送出礼物最多的人送的礼物尽可能少.并输出送礼物的方案. 思路:这道题麻烦的是网络流模型的转换(废话). ...

  8. secureCRT The remote system refused the connection.解决办法

    使用远程登录工具SecureCRT登陆ubuntu的时候遇到了这个问题: secureCRT The remote system refused the connection 这个问题的原因是是Ubu ...

  9. JMeter 常用网站

    1.jmeter插件 https://blog.csdn.net/weixin_39430584/article/details/80947093 http://www.doc88.com/p-214 ...

  10. Delphi如何获取一个字符串再另一个字符串中最后一次出现的位置

    uses StrUtils;   function ReversePos(SubStr, S: String): Integer; var   i : Integer; begin   i := Po ...