首页 > 其他分享 >IDEA切换git分支时如何使用git stash

IDEA切换git分支时如何使用git stash

时间:2022-12-30 15:59:45浏览次数:34  
标签:git IDEA stash 修改 切换 checkout 分支

切换分支弹出提示:Force Checkout / Smart checkout

打开帮助文档原文如下:

翻译大意如下:

多任务(就是多分支)开发时,经常需要在分支之间切换跳转来提交无关联的修改

在idea上做分支切换时会发生什么,取决于你的本地尚未commit的修改和将要checkout的分支是否有冲突

如果idea设置开启了"Restore workspace on branch switching"选项(Settings-Version Control-Confirmation),idea会保存你当前的context,当你切换到一个不同的分支(比如A),idea自动恢复这个分支(A)的context

如果你的working tree是clean的(就是说没有uncommited changes),或者你的本地修改与将要切换到的分支没有冲突,分支将会正常checkout(底下会有个提示)

如果你的本地修改将会被checkout的分支覆盖,idea将会阻止你的切换操作,并列出将会被覆盖的文件列表,建议你选择Force checkout 和 Smart Checkout

  如果选择force checkout ,你本地的未提交的修改将会被覆盖,你将丢失这些修改

  如果选择Smart Checkout,idea将会stash 未提交的修改,checkout到新分支,然后再执行unstash 修改,如果此时unstash的时候发生冲突,将会提示你合并冲突

 

git stash适用场景

现在正在A分支下开发,这个时候在分支B上有一处bug要修改,需要从A切换到B,切换前需要将A分支修改的代码提交,但此时A里面有未通过编译的代码

此时可以考虑用git stash将A分支上修改的代码进行暂存

git stash 命令的作用就是将目前已经修改但是还不想commit的内容暂存下来,后续可以恢复继续开发;作用的范围包括工作区和暂存区中的内容

例如线上突然出现 bug,需要先切换到 master 分支,但当前分支的代码做了修改又不想马上commit,直接切换分支,会将当前分支的新增的代码也添加到 master 分支,就可以使用 git stash

 

git stash 如何使用

 

 

 

 写下备注,因为可能有多处stash,方便后面unstash的时候区分,点击Create Stash

 切回分支之后再unstash还原回来:

 

 

 选择之前暂存的记录,勾选 Pop stash(还原完成后,会自动删除这个 stash,不勾选不会删除这个 stash)

点击 Pop Stash ,工作区之前的代码修改恢复回来

标签:git,IDEA,stash,修改,切换,checkout,分支
From: https://www.cnblogs.com/yb38156/p/16164847.html

相关文章

  • git submodule的.git目录
    要写hook的时候,发现summodule没有hook目录,于是mkdir-p.git/hooks结果提示报错了,因为gitsubmodule的.git是一个文件查了一下资料,可以在submodule里查看git目录在哪......
  • GitHub关于时间单位的单词速记表
    音标GitHub[ɡɪthʌb]GitLab[ɡɪtlæb]时间一月Jan/January二月Feb/February三月Mar/March四月Apr/April五月May六月Jun/June七月Jul/July八月Aug......
  • IDEA 出现问题:Error running,Command line is too long. Shorten command line解决方案
    问题描述Errorrunning‘MallTest.testRun’:Commandlineistoolong.ShortencommandlineforMallTest.testRun.错误运行的测试。命令行太长。缩短命令行。解决......
  • git如何添加子模块
    ①克隆父仓库$gitclonehttps://github.com/a/a.git 本地路径②添加子仓库$gitsubmoduleaddhttps://github.com/a/b.git③push到父仓库$gitadd.$gitcommit-m......
  • git如何删除子模块
    删除子模块:(分4步走)1)$gitrm--cached[path]根据路径删除子模块的记录2)编辑“.gitmodules”文件,将子模块的相关配置节点删除掉清理子模块配置3)编辑“.......
  • 还在用 XShell - 试试 IntelliJ IDEA 的 SSH
    SSH是很多人用得不多,但是又不得不用的工具。如果你不是搞运维,没有必要搞个CRT,XShell也够用了,但是这2个都是收费软件,同时还不太便宜。试试IDEA的SSH其实Intelli......
  • 3、聚合项目并修改gitignore文件
    当我们在一个总项目中创建了好多模块时,如下我们希望最外层的项目将子项目聚合起来,就可以复制一个pom文件到外面然后修改如下(最外层pom不需要依赖什么,都删除即可,只需添加m......
  • Vue项目编译报错 'error:03000086:digital envelope routines::initialization error'
    升级了本地的nodejs版本,导致旧项目无法运行,运行提示如下。   原因是nodejs版本过高。解决办法:降低node.js版本......
  • Gitea
    简介使用过git的开发者都知道,这是一个很好用的代码管理工具。网上已有很多在线的git管理平台,如github、gitee等,但有一些限制,如:有成员人数限制。github免费的私有库最多......
  • idea--git--如何将多次commit合成一个点
    具体可以参考:https://blog.csdn.net/qq_50652600/article/details/122990692场景:1.测试分支一个小功能多次提交,不太雅观,同时代码不方便合并到生产环境分支,此时可以将测......