IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> git之本地有未提交代码如何切换分支 -> 正文阅读

[开发工具]git之本地有未提交代码如何切换分支

1:写在前面

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

2:测试

  • 查看当前分支
E:\workspace-idea\testtag>git branch -vv
  master                      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-0486

 E:\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 txt

JHP+Administrator@jhp MINGW64 /e/workspace-idea/testtag (testtag-v1-new-branch-local)
$ git stash show
 aa.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.md

JHP+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.git
   a85d924..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.md

JHP+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.txt

Dropped refs/stash@{0} (1fee21c566eb75f8c695247ffe691c8c68bf5c9d)

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

$ ls
aa.txt  LICENSE  README.en.md  README.md  滴滴滴.txt

JHP+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了。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 13:02:18  更:2021-12-13 13:04:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:36:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码