千家信息网

Git工作区储藏兼谈分支管理中的问题怎么解决

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本篇内容主要讲解"Git工作区储藏兼谈分支管理中的问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Git工作区储藏兼谈分支管理中的问题怎么解决"
千家信息网最后更新 2025年02月03日Git工作区储藏兼谈分支管理中的问题怎么解决

本篇内容主要讲解"Git工作区储藏兼谈分支管理中的问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Git工作区储藏兼谈分支管理中的问题怎么解决"吧!

问题回顾

小伙伴遇到的问题是这样的:

现在有一个master分支,master分支中有一个文件叫01.txt,该文件中只有一行数据,然后对01.txt执行add和commit,然后再从master分支中创建出一个新的分支fa,切换到fa分支上,然后向01.txt中再添加一行数据,添加成功之后,不做任何事情,再切换回master分支,此时用cat命令查看01.txt文件,发现竟然有两行数据,按理说master中的01.txt只有一行数据,而fa中的01.txt有两行数据,整个过程如下图:

要搞清楚这个问题,得先明白下面这个问题:

cat命令和git无关,就是用来查看文件的,我为了演示方便使用了cat命令,这和直接用记事本打开文件查看效果是一样的。

可能眼尖的小伙伴已经发现端倪了,我们上面这个操作少了两个步骤,那就是add/commit,fa分支中的数据修改之后直接切换回了master,而没有add/commit。正常情况下(修改数据后add/commit),如果master和fa分支中的数据不一致,我们执行了git checkout -进行分支的切换,这个时候工作区中的文件内容也是会跟着变化的(大家可以通过cat命令或者直接在记事本中打开工作区的文件来查看这种变化),但是如果我在fa分支中修改了文件却没有add/commit就切换回master,此时如果工作区的文件变化了,可能会导致我在fa分支中的修改丢失,因此,这个时候工作区的文件就没有变化,即工作区的文件内容还是fa分支中修改的内容。

解决这个问题,我们有两种方案,请小伙伴们往下看。

解决方案

方案一

第一种解决方案就是在某一个分支修改文件之后,先add并且commit之后再去切换分支,这个操作就比较简单了,我这里就不再演示了。

方案二(储藏)

第二种解决方案就是储藏(Stashing),储藏适用在如下场景中:

当我在一个分支fa中修改了文件,但是还没有完全改好,此时我并不想add/commit,但是这个时候有一个更急迫的事情在另外一个分支fb上需要我去做,我必须要切换分支。

在这样一个场景中,如果我直接切换分支,会出现如下两个问题:

1.从fa切换到fb之后,工作区的代码还是fa的代码,不符合我的工作要求。
2.假设我不在乎问题1,在fb中直接修改工作区的代码,等我在fb中修改完后提交后再回到fa,会发现我之前的代码丢失了。

为了解决这个问题,Git给我们提供了储藏(Stashing)。

现在假设一开始master和fa分支中的文件内容都是一致的,而且两个分支的工作区都是干净的,即没有东西需要add/commit,此时,我在master中修改了文件,修改完成之后,执行git status命令我们看到master中有东西需要add/commit,此时我想切换到fa分支中去,但是并不想对master分支执行add/commit,这个时候我们可以执行如下命令,先将当前分支中的文件储藏起来:

$ git stash

OK,执行完git stash命令之后,再执行git status,我们发现此时master分支已经是干净的了,此时我们可以愉快的切换到fa分支中去了,切换到fa分支之后,我们发现master中的修改并没有干扰到fa分支,当我们完成了fa分支中的工作之后,再回到master分支,此时执行如下命令可以恢复刚刚储藏的数据:

$ git stash apply

上面这个命令执行完之后,master分支中的工作区中的文件就恢复了,此时执行git status就可以看到又有数据需要add/commit了。

我们也可将工作区储藏多次,这个时候我们可以执行如下命令来查看储藏:

$ git stash list

执行效果如下:

git stash apply表示恢复最近一次储藏,如果我们想恢复到之前的某一次储藏,可以加上储藏的名字,如下:

$ git stash apply stash@{1}

还有一些其他的关于储藏的命令:

1.恢复储藏并出栈
$ git stash pop

执行效果和git stash apply一样,不同的是,这里执行完之后,会将栈顶的储藏移除。

2.删除某一个储藏
$ git stash drop stash@{4}

最后一个参数是指储藏的名字。

到此,相信大家对"Git工作区储藏兼谈分支管理中的问题怎么解决"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

分支 文件 工作 工作区 切换 问题 命令 数据 内容 方案 时候 代码 就是 变化 管理 一行 两个 小伙 小伙伴 效果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全知识 技能考核计划 卫士通 网络安全管理平台 违反网络安全法而判刑的例子 可以玩自定义的云顶是哪个服务器 计算机网络技术高等职业教育 北京红康云互联网科技公司 博林特服务器怎么切换中文 数据库第二范式完全依赖 dnf挂机搬砖软件开发 网控服务器 德惠质量网络技术咨询售后服务 群晖邮件服务器安全 海迅实时数据库 比较 网络安全意识基本概念 奇妙海域网络技术 深圳交通银行软件开发中心地址 温州软件开发驻场报价 北京软件开发学习班 公安网络安全备案号境外检测 中国的服务器有安全问题吗 诛仙手游双平台服务器 明日之后阿尔亚湖服务器大全 软件开发二三事文档评审 邮储银行西安软件开发中心 石景山区技术软件开发服务价钱 恒生科技以及恒生互联网区别 通信服务器属于通信子网 软件开发需求变化与调整措施 数据库还原失败错误5 软件开发无用功
0