git隐藏和剪切代码

场景一

当正在dev分支开发时,突然有bug需要修改

这时你想创建一个分支issue-101来修复它,去修bug,但是dev功能才写了一半,不想提交怎么办,这时切分支肯定会提醒修改要提交,能否暂存起来?

git stash命令

提示 Saved working directory and index state WIP on dev: 5ba890f --no-ff 测试

在这里插入图片描述

bug 修复完后切换回dev分支,发现没有修改的,查看之前的改动也不在了,这是丢失了吗,该怎么找回呢

在这里插入图片描述

stash 藏匿; 隐藏

git stash 将修改隐藏 git stash

工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:

一是用 git stash apply恢复,git stash apply 恢复当前最顶部的stash,并在stash list中保留该stash id

但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

在这里插入图片描述

git stash pop恢复被藏匿的代码。之后stash区内容也会被清掉

在这里插入图片描述

stash ID

是git stash list 获取到的key值

输入git stash list ,得到以下结果 ,其中 stash@{0}就是id

stash@{0}: WIP on dev: 5ba890f --no-ff 测试

在这里插入图片描述

git cherry-pick

Git专门提供了一个cherry-pick命令,让我们能复制一个特定的提交到当前分支,意思应该是一次提交

在master分支上修复了bug后,我们要想一想,dev分支是早期从master分支分出来的,所以,这个bug其实在当前dev分支上也存在。如果想修改dev,并不是把整个master分支merge过来。

以前笨方法:在dev分支再手动修改一次并提交,逻辑是,把修改bug那一次提交复制到dev就好了

同样的bug,要在dev上修复,我们只需要把4c805e2 fix bug 101这个提交所做的修改“复制”到dev分支。注意:我们只想复制4c805e2 fix bug 101这个提交所做的修改,并不是把整个master分支merge过来。

使用 git cherry-pick commitID 命令

commitID 是从master 上找的,提交 bug 007,产生的cmmit id

git cherry-pick 27c80b9

cherry-pick 会将之前的bug 007提交复制到dev ,这次 提交产生了一个新的commitID,但并不会把master上的commitID复制过来

在这里插入图片描述

小结

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;

在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

参考 廖雪峰Git教程(2020)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值