【Git学习】从git stash原理理解三大区域和分支切换

使用情景

(1)当我们本地修改了代码,然后想使用git pull下拉远程代码,为了避免冲突,可以使用git stash存储本地的修改

(2)当我们在开发分支修改了代码,但是还不想提交,此时项目有一个bug需要立马去解决,可以使用git stash保存本分支的修改,然后在bug分支修复bug之后重新回到开发分支,还原工作场景。

命令解析

git stash   //会将已跟踪的文件压入栈中,未跟踪的文件不会压入栈中
git stash list  //查看所有的存储列表
git stash show  //可以查看哪些文件被存储。
git stash apply stash@{n} //重新获取某一次存储
git stash drop stash@{n}  //删除某一次的存储
git stash pop  //恢复最新的进度到工作区,来重新应用储藏,同时立刻将其从堆栈中移走。该命令会丢失暂 
               //存区的修改。
git stash pop --index  //恢复最新的进度到工作区和暂存区, 这样的话就可以恢复到和之前一模一样了, 
                       //即之前暂存过的现在也会是暂存状态,未暂存的仍是未暂存的状态。

git ls-files --stage //查看index文件内容

git cat-file -p 查看对象存储的内容

分支切换

问题

        新增一个文件a,使用git add添加进缓存区,所有分支的index都有该HASH值,一旦一个分支commit该文件,则仅有该分支index文件中有该文件的HASH值?
原因

第一步(1)我们切换分支时会使用我们分支上最新的一个提交来还原我们的暂存区和工作区内容
第二步(2)如果存在以下几种文件:
1.新文件,还未提交,切换分支时,会向切换的分支index添加新文件的HASH值。
2.更新原有文件,且切换的分支有该文件,如果还未commit,切换分支会告诉切换的分支 M 文件名--修改
3.更新原有文件,且切换的分支没有该文件,如果还未commit,切换分支时会报Please, commit your changes or stash them before you can switch branches.原因是,如果没commit,假设切换成功,新的分支是没有该文件的,所以如果你再想切换回来,原来修改的内容就会丢失。这种情况就需要使用git stash

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值