20190810_idea切换Git分支时保存未提交的文件

问题描述

我们现在需要开发一个新功能A时,我们需要从Dev分支上创建一个新的功能分支Feature_A,然后我们就在这个分支上进行开发。假设有一天,你正在开发,本地已经在Feature_A上修改了几个文件,但是功能还没有完全开发完成,你不想commit,此时测试跟你说在现在的一个测试分支Test_B上有1个Bug,希望你去修复。这个时候你有两种选择:

  • 提交Feature_A上的文件,然后切换到Test_B修复Bug。(你不想这么干)
  • 不提交Feature_A上的文件,直接切换到Test_B修复Bug,这样会把Feature_A里面修改的文件带到Test_B里面去。(你也不想这么干,因为Feature_A的新功能不应该跟Test_B扯上任何关系)

解决方案

注意:这里的解决方案只是针对Intellij Idea,使用原生git stash功能也可以解决这个问题

我们现在有三个分支,如下图:


image.png

我们目前在Feature_A上进行开发,需要去修复TestB的Bug,假设我们在Feature_A上新增了一个文件,也修改了一个文件,如下图:


image.png
  • 方法一:使用Shelve Changes
  1. 选中Feature_A上你不想提交的文件,右键选择Shelve Changes


    image.png
  2. 保存Shelve Changes


    image.png

    3.查看Shelve Changes


    image.png
  3. 切换到TestB,修复Bug。切换到TestB之后,你会发现你在FeatureA中的修改并没有带到TestB里面来,你可以放心在TestB上修改。


    image.png
image.png
  1. TestB修复完成之后,切换回Feature_A,选择Shelve Changes进行UnShelve


    image.png

    image.png

    image.png

    6.Feature_A的修改恢复之后,删除Shelve Changes


    image.png
  • 方法二:使用Stash Changes
  1. 选中Feature_A上你不想提交的文件,右键选择Git->Repositor->Stash Changes


    image.png
  2. 保存Stash Changes


    image.png
  3. 查看Stash Changes


    image.png

    image.png
  4. 切换到TestB,修复Bug。切换到TestB之后,你会发现你在FeatureA中的修改并没有带到TestB里面来,你可以放心在TestB上修改。


    image.png

    image.png
  5. TestB修复完成之后,切换回Feature_A,选择Git->Repositor->UnStash Changes


    image.png

    image.png

    image.png

    6.Feature_A的修改恢复之后,删除Stash Changes


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • git分支使用的坏习惯 最近使用git提交代码发现大家的方式都不一样,自己在使用中也遇到了一些问题,导致代码危险。...
    好奇的小刺猬阅读 1,750评论 0 1
  • 喜欢樱花,是从家里有棵樱花树开始的,原来一直都是在望梅止渴,根本不知道自己喜欢什么,好像是花就行。 这几年被确证下...
    王书朋阅读 445评论 1 7
  • 冷, 冬至, 风很大, 乱了轨迹, 湖面漾开了, 一层层的涟漪, 汀上摇摆的芦苇, 似乎想诉说着什么? 感受迎面的...
    欣阅学堂阅读 358评论 0 0
  • 昨晚泡发的红菇,冰箱里拿出来冰冻的基围虾,开火五分钟红菇海鲜面出锅了,简单 快速 营养又健康!
    蔷薇歆洁阅读 665评论 0 0