1:写在前面

在工作中经常会有这样的场景,线上发现紧急bug,需要切换到master进行修复,然后上线,但是此时我们还在开发分支,且因为一些原因本地的修改还不能提交,此时呢,如果我们直接切换分支到master的话会将分支修改的内容自动合并到master,这并不是我们想要的效果,本文看下如何处理这种情况。

2:测试

  • 查看当前分支
E:\workspace-idea\testtag>git branch -vvmaster                      a85d924 [origin/master] add aa txt
* testtag-v1-new-branch-local a85d924 [origin/testtag-v1-new-branch] add aa txt

可以看到本地分支和远程分支的对应关系,此时我们在本地分支testtag-v1-new-branch-local,先看下当前文件的内容:

E:\workspace-idea\testtag>dir驱动器 E 中的卷是 新加卷卷的序列号是 96D4-0486E:\workspace-idea\testtag 的目录2021/12/12 周日  16:06    <DIR>          .
2021/12/12 周日  16:06    <DIR>          ..
2021/12/12 周日  16:06                 8 aa.txt
2021/12/12 周日  16:06            10,356 LICENSE
2021/12/12 周日  16:06               987 README.en.md
2021/12/12 周日  16:06             1,351 README.md   4 个文件         12,702 字节2 个目录 457,044,774,912 可用字节
  • 分支执行一些修改

假设我们修改aa.txt增加内容巴拉巴拉喇叭喇叭,如下:

$ cat aa.txt
111111
巴拉巴拉喇叭喇叭

然后增加一个新文件滴滴滴.txt,内容为滴滴滴,如下:

$ cat 滴滴滴.txt
滴滴滴

此时,遇到了线上问题,需要切换到主干进行修复,先看下此时分支的内容:

JHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (testtag-v1-new-branch-local)
$ ls
aa.txt  LICENSE  README.en.md  README.md  滴滴滴.txt
$ git add 滴滴滴.txt
warning: LF will be replaced by CRLF in 滴滴滴.txt.
The file will have its original line endings in your working directory
$ git status
On branch testtag-v1-new-branch-local
Your branch is up to date with 'origin/testtag-v1-new-branch'.Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   "\346\273\264\346\273\264\346\273\264.txt"Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   aa.txt
  • 暂存分支修改

在开发分支执行暂存--该操作很关键,如下:

$ git stash
Saved working directory and index state WIP on testtag-v1-new-branch-local: a85d924 add aa txtJHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (testtag-v1-new-branch-local)
$ git stash showaa.txt                                     | 1 +"\346\273\264\346\273\264\346\273\264.txt" | 1 +2 files changed, 2 insertions(+)
  • 切换到主干

此时我们已经将分支的修改暂存了,然后切换到主干修改紧急bug:

$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.JHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (master)
$ ls
aa.txt  LICENSE  README.en.md  README.mdJHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (master)
$ cat aa.txt
111111
  • 在主干修复紧急bug

可以看到此时主干完全没有受到分支修改的影响,此时我们在主干修改bug,比如在aa.txt增加内容门店端的非跨组织流程收不到代办,需要周末加班处理,如下:

$ cat aa.txt
111111
门店端的非跨组织流程收不到代办,需要周末加班处理

好的,紧急bug修复完毕了,就push:

JHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (master)
$ git commit -am'门店端的非跨组织流程收不到代办,需要周末加班处理'
[master 57b8095] 门店端的非跨组织流程收不到代办,需要周末加班处理1 file changed, 1 insertion(+)JHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (master)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 422 bytes | 422.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.2]
To https://gitee.com/dongsir2020/testtag.gita85d924..57b8095  master -> master

接下来就上线就行了,然后我们就可以切回到分支继续之前的开发了。

  • 切回到分支继续开发
$ git checkout testtag-v1-new-branch-local
Switched to branch 'testtag-v1-new-branch-local'
Your branch is up to date with 'origin/testtag-v1-new-branch'.JHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (testtag-v1-new-branch-local)
$ ls
aa.txt  LICENSE  README.en.md  README.mdJHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (testtag-v1-new-branch-local)
$ cat aa.txt
111111

切换分支后可以看到之前修改的内容并没有恢复,这是因为我们已经暂存了,接下来弹出暂存的内容:

$ git stash pop
On branch testtag-v1-new-branch-local
Your branch is up to date with 'origin/testtag-v1-new-branch'.Changes to be committed:(use "git restore --staged <file>..." to unstage)new file:   "\346\273\264\346\273\264\346\273\264.txt"Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   aa.txtDropped refs/stash@{0} (1fee21c566eb75f8c695247ffe691c8c68bf5c9d)

然后在查看,修改的内容就回来了:

$ ls
aa.txt  LICENSE  README.en.md  README.md  滴滴滴.txtJHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (testtag-v1-new-branch-local)
$ cat aa.txt
111111
巴拉巴拉喇叭喇叭JHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (testtag-v1-new-branch-local)
$ cat 滴滴滴.txt
滴滴滴

接下来就可以继续愉快地写bug了。

git之本地有未提交代码如何切换分支相关推荐

  1. git删除本地所有未提交的更改

    1.git 删除本地所有未提交的更改 git checkout . && git clean -xdf 一般 git clean都是配合git reset 使用的 如果你有的修改已经加 ...

  2. sourceTree对git的新建项目、储藏代码、切换分支、回滚代码、提交代码

    sourceTree是一个简单的图形化git管理工具 一.新建一个项目 二.储藏代码 三.切换分支 在切换分支之前,可以对当前分支进行储藏,若是想切回原来的分支直接右键储藏的分支选择应用储藏区即可,工 ...

  3. 使用git时,不想提交本地代码并切换分支是如何操作?

    先来了解下平时开发时,经常使用到的git命令吧! git add;                                 将代码到暂存区 git commit -am "init& ...

  4. git 删除本地所有未提交的更改

    没时间看的,直接CV大法还原当前分支代码 两个命令都可以 git checkout -f && git clean -df git reset --hard && gi ...

  5. IDEA中SVN未提交代码,更新时有冲突接受其它怎么办

    场景 本地有未提交代码,更新代码时提示有冲突,没有选择合并,而是选择接受它们的. 实现 此时通过svn 的查看历史版本无法查看本地的版本. 选择文件右键--Local History --Show H ...

  6. 【GIT】git提交代码到指定分支图文并茂、详细步骤说明

    1.远程仓库已有分支的情况下提交代码至这个分支  问题出现场景: 在公司中遇到协同开发的需求,部门其他人员已经创建了某个分支,要求我们在这个分支进行开发,这时候我们就遇到了以下问题:我们本地默认是只有 ...

  7. 使用git向远程厂库提交代码时rejcted错误

    在使用git向远程厂库提交代码时: 有的小朋友会出现 Push rejected: Push to origin/master was rejected 出现这样的问题应该是本地厂库和远程厂库没有管理 ...

  8. 使用git初始化本地仓库并提交到远程分支

    创建本地文件并提交到github远程分支,步骤如下: 1.通过github创建repository,本例中repository名称为maven_demo,工程为maven + spring + myb ...

  9. Git系列之把未提交的代码保存到本地

    文章の目录 1.场景 2.解决方式 3.apply 和 pop的区别 写在最后 1.场景 当正在dev分支上开发某个项目,这时候项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不 ...

最新文章

  1. 青桔单车 chameleon 跨平台实践
  2. 《数据结构》学习笔记一:绪论
  3. markdown引入代码_人人都会的Markdown
  4. 第二十五篇 hashlib模块(* *)
  5. Eureka自我保护机制
  6. Linux hypervisor VMM介绍
  7. python账户密码_python02 用户名密码
  8. php相册上传和删除吗,php上传与删除图片的简单范例
  9. 黑客编程学习_1.黑客编程入门
  10. java冒泡排序及面向对象基本概念
  11. vulnhub——XXE练习
  12. 可以嵌入ppt的课堂点名器_异地授课+大屏直播,打造沉浸式线下多地互动智慧课堂...
  13. 小米手机如何更换铃声和微信提示音
  14. Windows 静态库函数名称问题
  15. A Brief History of Humankind — 01 the cognitive revolution
  16. 删除线性表节点(线性表)
  17. elemet-ui后台表格自动排序解决办法
  18. 瑞幸点燃导火索,兄弟公司神州租车迎大变局
  19. Excel小技巧----VLOOKUP数据匹配
  20. c语言学生成绩统计问题分析,统计计算学生成绩类有关问题ACing

热门文章

  1. java 遍历删除list_JAVA中循环删除list中元素
  2. Android 仿支付宝支付密码输入框
  3. 数据结构——顺序表的逆置
  4. iOS 打开html、txt、PDF、PPT等文件
  5. 『网易实习』周记(一)
  6. 移动端H5直播/点播前端入坑简易手册
  7. 格子披风背后,他们正用代码改变世界!
  8. android 调用第三方QQ、微信、新浪微博、腾讯微博等聊天方法
  9. ArcGIS Pro地理空间数据处理完整工作流实训及python技术融合
  10. 马石油2022年总收入增至3753亿林吉特