6. git内容存档git stash和有跳跃分支版本合并cherry-pick

1. git内容存档git stash

在开发的过程中,往往会遇到各种各样的突发情况,这个时候需要将当前手头的任务线"存档",转去处理紧集的事情,回来之后再继续,有点类似于堆栈的压栈和出栈的过程,事实上也就是如此。

比如当前我正在编辑hello.py文件,当前的状态,我正在修改hello.py文件
在这里插入图片描述
但是此时有个任务派给我需要我去bugFix分支修复某个bug,因为我在hello.py的任务还没有完成,所以也就没办法将当前内容commit到版本库中,我尝试直接switchbugFix分支
在这里插入图片描述
切换过程没有问题,但是当我使用git status查看当前版本状态,得到如下结果:
在这里插入图片描述
?!为什么我在dev分支下面的修改被带到bugFix分支了?
这是因为当前的开发工作在工作区,这个区域是所有分支都能访问的,你只有把这些工作内容commit到了某个分支,所做的修改才会只属于那个分支。
于是这样行不通,我不能把这些开发的内容和修复bug的内容混杂在一起,于是我们需要存档,首先切换回我们的开发分支,然后将工作区的修改内容存档,然后再切换到bugFix分支进行bug修复:
在这里插入图片描述
从上图可以看到,dev分支的修改内容被存档了,切换到bugFix分支后,没有把那些东西附带过来,于是我们可以在完成bug修复之后,切换回dev分支继续开发,使用git stash pop命令将之前的存档内容调出来:
在这里插入图片描述
从上图可以看到,调档之后恢复到了我们离开的时候的开发进度,于是我们可以继续之前的工作。
可以使用git stash list查看当前所有的存档,如果有多个存档,则需要使用git stash apply stash@{ID}进行指定存档版本的恢复。

2. 跳跃分支版本合并cherry-pick

如上所述,如果我们修复的bug在当前的分支里面也有的话,我们是不是也需要将当前分支的bug也要修复一次?一种想法就是把bugFix分支修改的内容copy到当前分支,事实上,Git专门提供了一个cherry-pick命令,可以复制一个特定的提交到当前分支,用法如下:

git cherry-pick ID

其中ID是版本号,也就是每次commit时都会生成的一串数字,可以使用它找到对应的唯一一次提交。

在这里插入图片描述
在这里插入图片描述
这样就可以将bufFix分支所做的修改也同样提交到当前分支。
细心的同学可能会发现,第一幅图像中使用了一个命令和参数进行偷懒:

git commit -am "something"

其实这个命令就是下面两个命令的结合版,可以省点事。

git add xxx
git commit -m "something"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值